斐波那契数列的几种考法:
1. 打印斐波那契序列
0 1 1 2 3 5...
打印Fibonacci 数列,说实话我觉得Iterative 简单很多
int first = 0; int second =1; int third = 0; System.out.println(first + " "+ second);
for(int i=2; i<n; i++)
third = first + second; first = second; second = third;
print (third);
*Recursion way:
这个题第一眼看上去是一脸懵逼。大家都知道计算Nth Fibonaci 的recursion方法是:return fib(n-1)+fib(n-2). 自然就会想到 假设func fib具备print整个序列的能力print fib(n). 那我用fib(n-1)的时候岂不是又print了一次,fib(n-2)又print了一次。
解法:(感觉比较考直觉,我是不知道怎么说思维过程。。。)
把variable 定义在外部。
n1=0, n2=1, n3=0
static void printFibonacci(int count){
if(count>0){
n3 = n1 + n2;
n1 = n2;
n2 = n3;
System.out.print(" "+n3);
printFibonacci(count-1);
}
2. Find nth 斐波那契number, recursion + Iterative
这个就不多写了。。。很简单。。。
3. prints out first 10 Fibonacci numbers which has a sum number bigger than 100000.
【其实感觉find first X number sum > n 也是一种题型】