当前位置: 首页 > news >正文

动态存储斐波那契数列(递归优化)

递归

递归是c++当中一种自身调用自身的算法。

普通递归解决斐波那契数列问题

#include<iostream>
using namespace std;
int f(int n){
	int sum;
	if(n<=2){
		sum=1;
	}else{
		sum=f(n-1)+f(n-2);
	}
	return sum;
}
int main()
{
	int n;
	cin>>n;
	cout<<f(n);
  return 0;
 }

 

当数据量比较大的时候,重复的内容会比较多,时间会很长。

优化后的斐波那契数列

#include<iostream>
using namespace std;
int arr[1001]={1,1};
int feibo(int n){
	if(n<=2){
		arr[n]=1;
	}else{
		if(arr[n-1]==0){
			arr[n]=feibo(n-1)+feibo(n-2);
		}else{
			arr[n]=arr[n-1]+arr[n-2];
		}
		
	}
	return arr[n];
} 
int main(){
	int end;
	cin>>end;
	cout<<feibo(end);
	
	
	return 0;
} 

 

通过空间换时间,采用数组存储每次计算后的结果,这样当再次进行递归时,就不需要再重新从1开始计算,而是可以直接使用之前计算过的数据,存储在数组中,这样可以大大减少程序运行的时间。

相关文章:

  • 基于AVue的二次封装:快速构建后台管理系统的CRUD方案
  • synchronized锁字符串
  • 语音直播交友app出海:语音直播交友系统软件源码搭建国际化发展技术层面分析
  • SHELL32!SHLoadPopupMenu函数分析之添加属性菜单项
  • Ubuntu22.04 - etcd的安装和使用
  • AI大模型发展对语音直播交友系统源码开发搭建的影响
  • python-leetcode-搜索二维矩阵 II
  • 实战:利用百度站长平台加速网站收录
  • Spring Boot 中事务的用法详解
  • 雷龙CS贴片式NAND芯片应用实践-大容量存储与多媒体设备的完美融合
  • Effective C++ 读书笔记(十二)
  • Perl 面向对象编程指南
  • 17-最长公共前缀
  • Android Coil3缩略图、默认占位图placeholder、error加载错误显示,Kotlin(1)
  • C++ 泛型编程之补充(class 和typename)
  • 【复习】Java集合
  • Vue2是如何利用Object.defineProperty实现数据的双向绑定?
  • 第十一章: vue2-3 生命周期
  • 《Operating System Concepts》阅读笔记:p62-p75
  • Uptime Kuma实现业务接口自定义逻辑监控
  • 创建简易个人网站/推广普通话的意义论文
  • 南阳商都网站做网站/电商怎么做?如何从零开始学做电商赚钱
  • bc网站搭建网站开发/长沙优化网站厂家
  • php wap网站实现滑动式数据分页/数字营销服务商seo
  • 正规的南昌网站建设/网络营销渠道有哪几种
  • 英文网站建设维护/网址大全导航