剑指offer-JZ9 跳台阶扩展问题
难度:简单
考点:递归、动态规划
题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法。
解题思路:
通过分析可以发现,也是一个可以递归的问题,同样,定义变量来存储中间变量方便后续取用。
# -*- coding:utf-8 -*- class Solution: def jumpFloorII(self, number): # write code here # f(n) = f(n-1) + f(n-2) + ...+ f(1) # f(n-1) =f(n-2) + f(n-3) + ...+ f(1) # f(n) = 2f(n-1) n >1 #f(1) = 1 ,n=1 if number == 1: return 1 ret = 1 a = 1 for i in range(2,number+1): ret = 2 * a a = ret return ret # 也可以直接找规律 2^(n-1) # return pow(2, number-1)
也可以直接分析,不写成循环形式,会发现,结果为2^(n-1),直接用pow求。