题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
python代码:
# -*- coding:utf-8 -*-
class Solution:
def jumpFloorII(self, number):
# write code here
if number <= 0:
return 0
return pow(2,number-1)
分析:
f(n) = f(0)+f(1)+...+f(n-2) + f(n-1)
# n个台阶的跳法,从后往前看,如果看先跳一个台阶,然后剩余n-1个,就是f(n-1);如果先跳两个台阶,剩余n-2个,就是f(n-2),。。。。。。,一次跳n个台阶,剩余0个,就是f(0)。可以想象,f(2) = f(0) + f(1)(一次跳2个,剩余f(0) ,一次跳1个,剩余f(1))所以f(0) = f(1) = 1
# 同理,可以列出f(n-1)的表达式
f(n-1) = f(0)+f(1)+...+f(n-2)
上式中等号左边减左边,右边减右边得:f(n) - f(n-1) = f(n-1)
所以 f(n) = f(n-1) + f(n-1) ,n=0,1时 f(n) = 1
所以 f(n) = f(n-1) + f(n-1) ,n=0,1时 f(n) = 1