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

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

递归

递归是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.kler.cn/a/556323.html

相关文章:

  • Unity游戏制作中的C#基础(2)变量与数据类型
  • Kettle 实战面试题及参考答案(完整版)
  • 【Java基础-46.3】Java泛型通配符详解:解锁类型安全的灵活编程
  • JavaScript如何创建一个对象?对象字面量和构造函数创建对象有什么区别?
  • 【第三节】C++设计模式(创建型模式)-单例模式
  • 通过监督微调提升多语言大语言模型性能
  • 模电知识点总结(5)
  • docker 和 Quay.io的关系
  • 使用 ^= 对每个字节进行异或操作完成校验和
  • Elasticsearch实战应用:从“搜索小白”到“数据侦探”的进阶之路
  • 5分钟下载excel模板
  • 【deepseek】本地部署+RAG知识库挂载+对话测试
  • 【Film】论文:2024 视频生成可以取代摄影师吗?生成视频的电影语言研究
  • GB28181协议详解
  • RabbitMQ报错:Shutdown Signal channel error; protocol method
  • 浅谈Word2vec算法模型
  • SpringBoot+Vue+Mysql苍穹外卖
  • 设备树及gpio子系统及ioctl控制及字符设备驱动及内核模块编程事项仨LED灯说点就点说灭就灭
  • VMWare安装Debian操作系统
  • CSS 解决 Flex 布局中 justify-content: space-between; 导致最后一排项目分散对齐的问题