可视化图解算法72:斐波那契数列

1.题目

描述

大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。

斐波那契数列是一个满足:

数据范围:1≤n≤40

要求:空间复杂度 O(1),时间复杂度 O(n) ,本题也有时间复杂度 O(logn)的解法

输入描述:

一个正整数n

返回值描述:

输出一个正整数。

示例1

输入:

4

返回值:

3

说明:

根据斐波那契数列的定义可知,fib(1)=1,fib(2)=1,fib(3)=fib(3-1)+fib(3-2)=2,fib(4)=fib(4-1)+fib(4-2)=3,所以答案为3。

示例2

输入:

1

返回值:

1

示例3

输入:

2

返回值:

1

2. 题解思路

其实题目已经给出了斐波那契数列的规律,我们只需要按照模板解题就可以。

具体解题思路是:

如果文字描述的不太清楚,你可以参考视频的详细讲解。

3.编码实现

核心代码如下:

Go 复制代码
func Fibonacci(n int) int {
	if n <= 2 {
		return 1
	}
	// 1. 定义状态.	i:第i个斐波那契数; dp[i]:第i个斐波那契数值
	dp := make([]int, n+1)
	// 2. 初始化边界条件
	dp[1] = 1
	dp[2] = 1
	// 3. 确定递推公式
	for i := 3; i <= n; i++ {
		dp[i] = dp[i-1] + dp[i-2]
	}
	//4.输出结果
	return dp[n]
}

具体完整代码你可以参考下面视频的详细讲解。

4.总结

由于本题给出了斐波那契数列的递推公式(数学表达式),因此只需要套用模板写出代码即可。本题的重点在于模板如何如何应用到动态规划的题目中。

《数据结构与算法》深度精讲课程正式上线啦!7 大核心算法模块全解析:

  ✅ 链表

  ✅ 二叉树

  ✅ 二分查找、排序

  ✅ 堆、栈、队列

  ✅ 回溯算法

  ✅ 哈希算法

  ✅ 动态规划

无论你是备战笔试面试 、提升代码效率 ,还是突破技术瓶颈,这套课程都将为你构建扎实的算法思维底座。🔥立即加入学习打卡,与千名开发者共同进阶!

对于LeetCode数据结构与算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。具体也可以参考视频详细讲解。

今日佳句:万物各得其和以生,各得其养以成。

相关推荐
UIU1147 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
论文复现现场7 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
ZhengEnCi7 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
秋天的怀念_David8 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
碧海银沙音频科技研究院9 小时前
在PC电脑上用Whisper→Marian算法实现离线语音翻译功能
算法·whisper
niyongsheng9 小时前
3D 装箱算法工程化:数据结构、放置启发式与支撑规则
数据结构·算法·rust
叉烧滑蛋11 小时前
B站台湾大学郭彦甫|MATLAB 学习笔记|04 变量与档案存取
数据结构
j7~12 小时前
【穷举、深搜与回溯算法】一棵决策树讲透全排列与子集
数据结构·c++·算法·leetcode·回溯·递归
傅科摆 _ py13 小时前
DP,贪心,堆和栈,二分力扣复习
开发语言·python·算法
Shaoshing13 小时前
LeetCode100 42.接雨水
java·算法·leetcode