第1关:青蛙上楼梯
任务描述
本关任务:一个青蛙一次可以跳上1级台阶,也可以跳上2级台阶,编写一个程序计算青蛙跳上一个n级台阶共有多少中跳法。
相关知识
为了完成本关任务,你需要掌握: 1.青蛙跳楼梯, 2.递归思想求解青蛙跳楼梯问题。
青蛙跳楼梯
青蛙跳楼梯问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n
级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
递归思想求解青蛙跳楼梯问题
思路:既然青蛙一次可以跳上1个1级台阶或者一次跳上1个2级台阶,那么跳上一个n级台阶的方法:
- 要么是先跳上一个n-1级台阶然后再跳一个1级台阶做到;
- 要么是跳上一个n-2级台阶然后再跳上一个2级台阶实现;
所以跳上n
级台阶的方法数等于跳上n−1
级台阶的方法数加上跳上n−2
级台阶的方法数,用f(n)
表示跳上n
级台阶的方法数,经过我们的分析,有:
使用递归算法求解青蛙跳楼
按照递归的思想,我们直到青蛙每次只能跳1级或2级台阶,那么假如调到n级台阶,那么青蛙只能从n-1级或n-2级跳上来,则f(n)=f(n-1)+f(n-2)
,用程序表示:
def goUpstairs(n):
if n == 1: #跳1级台阶只有一种方法
return 1
elif n==2:#跳2级台阶有一次跳2级,或者连续跳1级,共有2中方法
return 2
else:
#请在下面空白处补充完整,实现求解青蛙跳上n级台阶有多少中方法
########## Begin ##########
########## End ##########
编程要求
根据提示,在右侧编辑器补充代码,实现求解青蛙跳上n级台阶有多少中方法的计算。
测试说明
点击右下角测评后,再返回到图形化窗口。 等待排序窗口出现,点击开始排序查看排序过程。 排序完成后,在600s内点击 exit,使界面关闭,即可进行测评。 若执行成功,说明成功通关。
开始你的任务吧,祝你成功!
#conding:utf8
def goUpstairs(n):
#青蛙爬楼梯,爬到第一阶需要爬一步,共有1中方法,爬到第2阶,可以一次爬2阶,也可以每次爬1阶共爬2次,请在Begin-End中补充代码,计算青蛙爬到n阶,共有多少中爬法
########## Begin ##########
if n==1:
return 1
elif n==2:
return 2
else:
return goUpstairs(n-1)+goUpstairs(n-2)
########## End ##########