斐波那契数列 详解

下面来简单说一下斐波那契数列的有效率的解法:

我们刚刚接触递归时肯定学习了斐波那契数列这样一个经典的例子,但这里的递归算法有一些效率问题。因为如果我们求fib(100)时。我们会发现产生了许多的重复运算。这些不但消耗着计算时间和资源容易产生栈溢出。这是非常危险的。所以下面介绍一个迭代的算法:(算法不难)

算法实现:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 long long Fib(unsigned n){
 5     int num[2] = {0, 1};
 6     if(n < 2){
 7         return num[n];
 8     }
 9     
10     long long fib1 = 0;
11     long long fib2 = 1;
12     long long fibN = 0;
13     
14     for(int i = 2; i <= n; ++i){                //迭代过程
15         fibN = fib1 + fib2;
16         fib1 = fib2;
17         fib2 = fibN;
18     }
19     return fibN;
20 }
21 
22 int main(){
23     long long num = Fib(6);
24     cout<<num<<endl;
25     return 0;
26 }
原文地址:https://www.cnblogs.com/dormant/p/5323014.html