【python逻辑算法题】一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法


提示:以下是本篇文章正文内容:

一、题目描述

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。(若n=0,则有1种)

二、问题分析

1、首先,设一共有f(n)种跳法
2、其次:
①当n=0时,默认有一种跳法,f(0)= 1
②当n=1时,青蛙可以用跳1级台阶的方式跳,一共有1种跳法,f(1) = 1
③当n=2时,青蛙可以用1级跳,或2级跳,一共有2种跳法,f(2) = 1+1=2
.
.
.
④当n=n时,我们可以用倒推的方式来分析问题。青蛙跳上最后一级台阶的方式只有两种情况,要么是1级跳,要么是2级跳。若青蛙用1级跳的方式跳到最后一级台阶,那么它前面跳的方法共有f(n-1)种;若用2级跳,则共有f(n-2)种。所以,两种情况加起来就是总种数:f(n) = f(n-1) + fn (n-2) (n>=2)
在这里插入图片描述
⑤所以,种数分为以下几种情况:
在这里插入图片描述
综上所述,此函数特征,符合斐波那契数列,即指的是这样一个数列:1、1、2、3、5、8、13、21、34、……从第三个数开始,这个数等于前两个数的和。

三、代码分析与逻辑(python3实现)

1、首先,要定义一个类,目的是将各种功能函数都封装起来,减少代码的冗余,提高程序的运行效率,此处定义Solution类
2、其次,定义一个带参函数,函数名为jumFloor(),参数为n。n代表台阶数。函数里是实现功能的逻辑代码
3、通过上述分析可得,斐波那契数列的前两项都为1,所以定义两个变量x,y且初始化为1,1
4、然后,对台阶数进行for循环遍历,遍历的变量名可以随机,此处用的是i。(此处i仅仅起到辅助遍历范围作用,无需调用)
5、根据斐波那契数列的特征,第三个数等于前两个数之和,就可以用x, y = y, x+y来表示,意思就是每遍历一次,两个数的位置就往后挪一位,之前的x=y,之前的y=x+y,这样就实现了后面的数等于前两个数之和的逻辑
6、最后的返回值应为x,原因如下:
在这里插入图片描述

7、定义一个对象s,来调用类
8、通过对象s来调用jumFloor()函数,并在函数参数位置输入台阶数,此时输入的台阶数为10
9、将s.jumFloor(10)的值输出
10、结果应为89

四、源码及运行结果

class Solution:
    def jumFloor(self,n):
        x, y = 1, 1
        for i in range(n):
            x, y =y, x+y
        return x

s = Solution()
s.jumFloor(10)
print(s.jumFloor(10))

在这里插入图片描述


总结

1、了解python3语法
2、了解斐波那契数列的特点,以及如何和代码相结合的逻辑

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值