[英]Fibonacci Recursion in Java - No For Loops?
我不明白我应该做什么。 我的教授希望我们使用递归创建斐波纳契数列。 不允许循环,我(作为业余爱好者)不知道如何按顺序创建6个数字的字符串。
以下是他的指示: “使用递归,创建一个返回包含Fibonacci序列的String的方法。接受一个整数来确定应返回的序列的值。”
这就是我到目前为止......
import java.util.*;
public class fibo {
public final static int n = 0;
public static String s = "";
public static void main(String[] args) {
Scanner scn = new Scanner (System.in);
System.out.println("Please put in a number.");
int n = scn.nextInt();
s = Integer.toString(n);
System.out.println(n+ ": " + fibonacci(n));
}
public static int fibonacci(int n) {
if(n <= 1)
return n;
else
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
除此之外,我觉得很多都是非常低效和凌乱的。 有人可以真正解释并帮助我做我应该做的事情吗?
看起来你正在Fibonacci序列中生成第n个数字,在我看来,你需要存储你正在生成的所有值(不仅仅是最后一个)并显示它们。
因此,在完成任务后,您需要显示f(1), f(2), ..., f(n-1), f(n)
而不仅仅是f(n)
。
这应该工作得很好:
public class Fibonacci {
public static void main(String[] args) {
System.out.println(Fib(3));
}
// returns the next number in the Fibonacci sequence
public static int Fib(int n) {
if (n < 2) {
return n;
} else {
return Fib(n - 1) + Fib(n - 2);
}
}
}
此代码显示斐波那契直到8没有任何循环...
public class FinnonnacciDemo2 {
static int no = 0, n = 8;
public static void main(String[] args) {
// This will print series till 8
fib(0, 1);
}
public static void fib(int a, int b) {
// Terminating condition.
if (a >= n) {
return;
}
else {
System.out.print("\t" + no);
no = a + b;
a = b;
b = no;
fib(a, b);
}
}
}
这是代码,它运行良好,没有不必要的代码。
import java.util.*;
public class Fibonaccis {
public static void main(String[] args) {
Scanner scn = new Scanner (System.in);
System.out.println("Lägg in ett nummer.");
int n = scn.nextInt();
System.out.println(n+ ": " + fibonacci(n));
}
// TODO Auto-generated method stub
public static int fibonacci(int n) {
if(n <= 1)
return n;
else
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.