【剑指 offer】跳台阶 2

1. 题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

2. 题目分析

与题目跳台阶1的主要区别是,不仅仅每次只能跳1个或者2个台阶,解决思路与跳台阶1相同:
假设最后一次跳一个台阶,则f_n = f_{n-1};
假设最后一次跳2个台阶,则f_n =f_{n-2};
以此类推,可以推到最后一次跳n个台阶,则f_n=f_{n-n},即一下子跳完;
综合所有情况:

\begin{align} f_n & = f_{n-1}+f_{n-2}+...+f_{n-(n-1)}+f_{n-n} \\ & = f_{n-1} + f_{n-2} + ...+ f_1+ f_0 \\ & = 2f_{n-1} \end{align}

这是一个等比数列,即f_n = 2^{n-1}f_1,因为f_1 = 1, 所以f_(n) = 2^{n-1}

3. 代码

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloorII(self, number):
        # write code here
        return 2**(number-1)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容