提高递归效率

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 函数 函数返回多个值 递归和菲波那契数列练习

java数据结构之二叉树遍历的非递归实现

2017-03-05函数基础函数四种结构ref和out参数递归

团队交流记录 - 2020-04

二分查找的递归和非递归写法