下面来简单说一下斐波那契数列的有效率的解法:
我们刚刚接触递归时肯定学习了斐波那契数列这样一个经典的例子,但这里的递归算法有一些效率问题。因为如果我们求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 }