上楼梯问题(跳台阶问题)
上楼梯问题(跳台阶问题)
是什么?
小白正在上楼梯,楼梯有N阶台阶,小白可以一次性上1阶,2阶或者是3阶,实现一个方法,计算小白有多少种走完楼梯的方式。(青蛙正在正在跳台阶,台阶有N层,青蛙可以一次性上1阶,2阶或者是3阶,实现一个方法,计算青蛙有多少种跳完台阶的方式。)
思路:根据此类问题的描述,我们可以采用递归(这种解题思路很重要)的方式来进行计算,来得出最终情况。
我们要有这种的敏感度:这种题目有一种特点是,若采用其他方法来计算是计算的过程很难进行一次次的分析并且得出什么数学的规律,就可以使用递归来解决此类问题。解决这类问题方法就是从反方面(由上到下)进行分析。从结果尾到刚开始。在根据解递归的三个步骤来进行分析。重点:先确定递归是哪种形式。递归的形式有:切蛋糕形式(如汉诺塔问题);存在某种数学规律(斐波那契数列);
def shangloutiwenti(n): //设置shangloutiwenti(n)函数,将此函数表示为第N层的方法次数。
if n==0:
return 0
elif n==1:
return 1
elif n==2:
return 2
elif n==3:
return 4
return shangloutiwenti(n-1)+shangloutiwenti(n-2)+shangloutiwenti(n-3)//第N层由到达第N-1层的次数加第N-2层的次数加第N-3层的次数
a=int(input())
count=shangloutiwenti(a)
print(count)
有以下图分析可知:
熟记这种题的解题方法和步骤