提高递归效率
Posted 猪八戒1.0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了提高递归效率相关的知识,希望对你有一定的参考价值。
f(1)=1,f(2)=1,f(3)=2,f(4)=3;f(n)=f(n-1)+f(n-2)
#include<iostream>
using namespace std;
int num=0;
int f(int n)
num++;
if(n==1||n==2)
return 1;
return f(n-1)+f(n-2);
int main()
f(20);
cout<<num<<endl;
return 0;
输出的值为13529
若采用记忆搜索num输出的值为37,大大降低递归次数,本质是把算过的就不再重复计算
#include<iostream>
using namespace std;
int num=0;
int a[22];
int f(int n)
num++;
if(n==1||n==2)
a[n]=1;
return a[n];
if(a[n]!=0)
return a[n];
a[n]=f(n-1)+f(n-2);
return a[n];
int main()
f(20);
cout<<num<<endl;
return 0;
以上是关于提高递归效率的主要内容,如果未能解决你的问题,请参考以下文章
2017-3-5 函数 函数返回多个值 递归和菲波那契数列练习