• 剑指offer09-变态跳台阶


    题目描述

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

    示例

    输入:3

    返回值:4

    知识点回顾

    跳台阶问题

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

    初始值很容易得到,当n > 2时,跳上n级台阶最后一步无外乎两种情况,从第n-1级跳一级跳上来,或是从第n-2级跳2级跳上来,因此很容易得到如下递归公式。

    F(0)= 0
    F(1)= 1
    F(2)= 2
    F(n)= F(n-1)+ F(n-2)(n > 2)

    变态跳台阶

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

    相比上一个跳台阶,这次可以从任意台阶跳上第n级台阶,也可以直接跳上第n级。因此其递归公式为各个台阶之和再加上直接跳上去的一种情况。

    F(0)= 0
    F(1)= 1
    F(2)= 2
    F(n)= F(n-1)+ F(n-2)+ … + F(2)+ F(1)+ 1

    因为F(n-1) = F(n-2) + … + F(2) + F(1) + 1,所以F(n) = 2 * F(n-1),等比数列F(n) = 2^(n-1)

    代码

    # -*- coding:utf-8 -*-
    class Solution:
        def jumpFloorII(self, number):
            # write code here
            return pow(2,number-1)
  • 相关阅读:
    【css】border-image
    函数的调用
    函数的返回值
    定义函数的三种形式
    文件处理实战之购物车系统
    文件处理小结
    文件修改的两种方式
    with管理文件操作上下文
    绝对路径和相对路径
    基本的文件操作
  • 原文地址:https://www.cnblogs.com/foolangirl/p/13900985.html
Copyright © 2020-2023  润新知