1.斐波那契数列是什么
在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
2.为什么要非递归
递归的好处:递归的代码很清晰,可读性好
递归的坏处:递归需要使用到系统的堆栈,空间消耗比非递归高很多,递归太深的话容易造成堆栈溢出,因此我们使用非递归来计算斐波那契数列。
3.代码
package fibonacci;
import java.util.Scanner;
/**
* 斐波那契数列 F(n)=F(n-1)+F(n-2)
* 斐波那契数列的非递归形式*/
public class Fibonacci {
public static void main(String[] args) {
int n;//求斐波那契数列的第n个数
Scanner in = new Scanner(System.in);
n = in.nextInt();
int f1 = 1,f2 = 1,f3 = 0;
System.out.print(f1+" "+f2+" ");
for (int i = 3; i <= n; i++) {
f3 = f1 + f2;
f1 = f2;
f2 = f3;
System.out.print(f3+" ");
}
}
}
运行结果:
15
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610