我已经使用递归编写了一个简单的斐波纳契系列,如下所示。但是以下程序基于公式fib(n)=fib(n-1)+fib(n-2)
。
我们可以编写一个程序来取n的值,并使用公式fib(n+2)= fib(n)+fib(n+1)
计算斐波那契数列。我们可以根据这个公式编写一个程序,将n作为输入。
public class FibonacciClass{
public static void main(String[] argv){
for (int index=0; index < 7; index++){
System.out.println("The Fibonacci series for the number "+index+" is " + fib(index));
}
}
private static int fib(int n){
if (n == 0 ) return 0;
if (n <= 2 ) return 1;
return (fib(n-1) + fib(n-2));
}
}
如果我们可以使用递归来解决fib系列,请告诉我您为此编写程序的输入。
答案 0 :(得分:1)
定义 gib(n)= fib(n + 2)。 用它来代替fib(n)和fib(n + 1):
gib(n-2)= fib((n-2)+2)= fib(n)
gib(n-1)= fib((n-1)+2)= fib(n + 1)
所以原方程变为
fib(n + 2)= fib(n)+ fib(n + 1) - > gib(n)= gib(n-2)+ gib(n-1)
我们可以对此进行处理。我们必须在代码中进行类似的替换(n代表n + 2):
static unsigned int gib(int n)
{
if (n <= -2) return 0;
if (n == -1) return 1;
return gib(n - 2) + gib(n - 1);
}
我没有包含导致负面fibonacci的负数(你的代码也会破坏它们)所以真的需要返回“unsigned int”。要修改为否定,请参阅here。