题目描述:
假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?
比如n=3,1+1+1=1+2=2+1=3,共有3中不同的方法
返回 3
**设f(n)为n阶台阶的情况下,所有不同的跳法方法的总和!** 1.如果起始跳一阶的话,剩余的n-1阶就有 f(n-1) 种跳法; 2.如果起始跳二阶的话,剩余的n-2阶就有 f(n-2) 种跳法;所以f(n) = f(n-1) + f(n-2),实际结果即为斐波纳契数。
源码:
class
Solution:
"""
@param n: An integer
@return: An integer
def
climbStairs(
self
, n):
# write your code here
if
n
=
0
:
return
1
tmpList
[
,
]
for
i
in
range
(
,n
-
):
x
tmpList[
+
2
tmpList.append(x)
**进阶**
如果某人可以一次性跳1~n阶,那他跳完n阶台阶有多少种跳法?
**设f(n)为n阶台阶的情况下,所有不同的跳法方法的总和!**1.如果起始跳一阶的话,剩余的n-1阶就有 f(n-1) 种跳法;2.如果起始跳二阶的话,剩余的n-2阶就有 f(n-2) 种跳法;3.如果起始跳三阶的话,剩余的n-2阶就有 f(n-3) 种跳法;
...n.如果起始跳n阶的话,剩余的n-2阶就有 f(n-n) 种跳法;
假定f(0) = 1,已知一阶台阶时,跳法只有一种,所以f(1) = 1所以f(2) = 1+1 = 2
得: f(n) = f(n-1)+f(n-2)+f(n-3)...+...+f(n-(n-1))+f(n-n)
f(n) = f(n-1)+f(n-2)+f(n-3)+...+f(0)
又: f(n-1) = f(n-2)+f(n-3)...+...+f(0) f(n-2) = f(n-3)+f(n-4)...+...+f(0)则: f(n) = 2 * f(n-1)
= 2^2 * f(n-2)
= 2^(n-2) * f(2)
**最终结果f(n) = 2^(n-1) **
*
(n
)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步