当前位置: 首页 > 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开始计算,而是可以直接使用之前计算过的数据,存储在数组中,这样可以大大减少程序运行的时间。

http://www.dtcms.com/a/30241.html

相关文章:

  • 基于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实现业务接口自定义逻辑监控
  • MySQL的数据类型
  • Java 虚拟机(JVM)方法区详解
  • C++ 设计模式-备忘录模式
  • 网页转EXE 网页变EXE 网页封装EXE
  • HTTPS 通信流程
  • 《算法基础入门:最常用的算法详解与应用(持续更新实战与面试题)》
  • 进程线程的创建、退出、回收
  • 2025年02月21日Github流行趋势
  • Android级联选择器,下拉菜单
  • 33. 搜索旋转排序数组(LeetCode热题100)