一、题目
题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。
二、题目分析
最简单的方法就是采用递归的方法,但是递归可能引起严重的问题,就是调用栈溢出。还有一种简单的方法就是从下往上计算,首先根据f(0)和f(1)计算f(2),再根据f(1)和f(3)计算f(3),把中间计算的结果保存起来,依次类推就可以算出第n项。
三、代码实现
方法一:
int func(int n){
if (n <= 0){
return 0;
}
if (n == 1){
return 1;
}
return func(n - 1) + func(n - 2);
}
方法二:
//方法二:采用递推的方法,递归的方法效率太低
int func(int n) {
int first = 0;
int two = 1;
int temp = 0;
for (int i = 2; i <= n; ++i) {
temp = first + two;
first = two;
two = temp;
}
return temp;
}