- 一、题目描述
- 二、问题分析
- 三、代码分析与逻辑(python3实现)
- 四、源码及运行结果
- 总结
提示:以下是本篇文章正文内容:
题目:一只青蛙一次可以跳上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、……从第三个数开始,这个数等于前两个数的和。
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、了解斐波那契数列的特点,以及如何和代码相结合的逻辑
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)