下面来简单说一下斐波那契数列的有效率的解法:
我们刚刚接触递归时肯定学习了斐波那契数列这样一个经典的例子,但这里的递归算法有一些效率问题。因为如果我们求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 }
本文探讨了斐波那契数列的经典递归算法存在的效率问题,特别是重复运算导致的计算资源浪费和栈溢出风险。通过介绍一种迭代算法,解决了这些问题,提供了更高效的斐波那契数列求解方案。
8531

被折叠的 条评论
为什么被折叠?



