谈谈跳台阶算法的记忆法和编程理念|青蛙跳台阶|递归|动态规划|算法|程序员面试|Java

简介

为什么会写这篇文章?
因为鄙人刷过此题多次,每次觉得自己会了,可下次还是不能一下子写出题解,故记录下我是如何记忆此题的,并且探索一些编程理念。

题目

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
数据范围:
1≤𝑛≤40 1≤n≤40
要求:时间复杂度:𝑂(𝑛),空间复杂度: 𝑂(1)

解法

这个题有 递归(自上而下)动态规划(自下而上) 两种解法。
两种解法都可以参考此图(树):
在这里插入图片描述
f(n) :计算跳到第n个台阶的跳法数量。
跳到n,肯定是从第“n-1”或“n-2”个台阶跳过来的,也就是 f(n)=f(n-1)+f(n-2)。
递归(自上而下)会重复计算。而动态规划(自下而上)则可以在计算的过程中保存 “跳到较低台阶的跳法数量” 的计算结果。
当然极限情况要考虑好,也就是 f(0) 和 f(1) 是我们要考虑的, f(0) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值