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

news/2025/2/22 11:56:41

递归

递归是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.niftyadmin.cn/n/5862221.html

相关文章

Mac book Air M2 用VMware安装 Ubuntu22.04

安装 VMware Fusion 下载 Ubuntu 安装VMware 完成之后运行新建 将对应Ubuntu 版本拖拽 如图 选择第一个回车 选绿色 回车 为空 相关命令行 sudo apt install net-tools sudo apt install ubuntu-desktop sudo reboot 常用命令行 uname uname -a clear ll ifconfig (查…

想象一个AI保姆机器人使用场景分析

把我的一个想象AI保姆机器人使用场景用DeepSeek和Kimi进行深度思考&#xff0c;下面2张图分别是kimi和ds的思维链。我觉得ds的总结一如既往的优秀。 关于AI是否具备智慧的判断与伦理反思 一、AI的“智慧”本质&#xff1a;能力与局限 当前AI的技术边界 无自主意识&#xff1…

计算机视觉基础|从 OpenCV 到频域分析

一、引言 在当今数字化时代&#xff0c;图像处理已渗透到我们生活的方方面面&#xff0c;从日常使用的智能手机拍照美化&#xff0c;到医学领域的精准诊断&#xff0c;再到自动驾驶中的环境感知&#xff0c;其重要性不言而喻。在图像处理领域中&#xff0c;OpenCV 和频域分析&…

【Vue.js 和 React.js 的主要区别是什么?】

Vue.js 和 React.js 的主要区别是什么&#xff1f; 前言 Vue.js 和 React.js 是当前最流行的两个前端框架&#xff0c;它们都用于构建用户界面&#xff0c;但在设计理念、语法和使用方式上有显著差异。本文将从多个维度对比 Vue.js 和 React.js 的主要区别&#xff0c;帮助开…

JAVA学习-练习试用Java实现“使用Apache Flink对实时数据流进行复杂事件处理和筛查”

问题&#xff1a; 编写一个Java程序&#xff0c;使用Apache Flink对实时数据流进行复杂事件处理和筛查。 解答思路&#xff1a; Apache Flink 是一个流处理框架&#xff0c;非常适合进行实时数据流的复杂事件处理和筛查。以下是一个简单的Java程序示例&#xff0c;它展示了如何…

【个人开源】——从零开始在高通手机上部署sd(二)

代码&#xff1a;https://github.com/chenjun2hao/qualcomm.ai 推理耗时统计 单位/ms 硬件qnncpu_clipqnncpu_unetqnncpu_vaehtp_cliphtp_unethtp_vae骁龙8 gen124716.994133440.39723.215411.097696.327 1. 下载依赖 下载opencv_x64.tar,提取码: rrbp下载opencv_aarch64.t…

逻辑架构与软件架构在PREEvision中的设计关系

1 Introduction 在如今汽车电子系统的开发过程中&#xff0c;系统架构设计是至关重要的环节。无论是汽车控制系统、信息娱乐系统&#xff0c;还是电动驱动系统&#xff0c;架构设计都决定了整个系统的功能、性能以及后期的可维护性和可扩展性。 在往期文章中&#xff0c;我们…

Linux-C/C++《C/9、信号:基础》(基本概念、信号分类、信号传递等)

本章将讨论信号&#xff0c;虽然信号的基本概念比较简单&#xff0c;但是其所涉及到的细节内容比较多&#xff0c;所以本章篇幅也会相对比较长。事实上&#xff0c;在很多应用程序当中&#xff0c;都会存在处理异步事件这种需求&#xff0c;而信号提供了一种处理异步事件的方法…