剑指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求。

原文地址:https://www.cnblogs.com/LLLLgR/p/15013125.html