根据上一篇博客的思想,我们可以很轻松写出这两个代码
(关于递归函数,我写了这么一篇博客:https://blog.csdn.net/question_mark/article/details/95253850)
代码如下
int Fib(int n){
if (n <= 2)
return 1;
else
return Fib(n - 1) + Fib(n - 2);
}
但使用递归的思想,当我们的参数n取50或更大的时候,我们会发现程序的运行效率会很低。
于是我们也可以使用非递归的思想求解斐波那契数。
这里我们可以采用一个while循环语句来实现。
int Fib2(int n){
int result;
int pre_result;
int next_older_result;
result = pre_result = 1;
while (n > 2){
//1 1 2 3 5 8
next_older_result = pre_result;
pre_result = result;
result = pre_result + next_older_result;
n--;
}
return result;
}