首页 > 编程语言 >python算法:青蛙跳台阶二

python算法:青蛙跳台阶二

时间:2024-05-16 10:54:40浏览次数:24  
标签:台阶 递归函数 python 青蛙 跳法 算法 num return

 

一,认识递归函数

1,什么是递归?
递归的工作原理是,如果函数需要处理的问题大小合适,则直接求解并返回结果,
否则将问题分解成两个或多个更小的子问题,并对子问题进行相同的处理,
直到问题无法分解为止

2,什么是递归函数:
递归函数(recursive function)是指在函数体中可以调用自己的函数

3,语法

def fn():
    # ...
    if condition:
        # 停止自我调用
    else:
        fn()
    # ...

4,递归函数的优点和缺点

递归函数的优点:它们可以帮助程序员在处理复杂问题时提供一种简单且易懂的解决方案。
递归函数使代码具有可读性和可重用性,
而且可以使用递归函数解决使用其他方法难以处理的问题。
递归函数的缺点: 递归函数可能会在运行时占用较多的系统资源,
因为它们需要在堆栈上存储多个函数调用
其次,递归函数可能导致代码变得不容易理解,
因为它具有一定的复杂度

说明:刘宏缔的架构森林—专注it技术的博客,
网址:https://imgtouch.com
本文: https://blog.imgtouch.com/index.php/2024/03/26/python-suan-fa-qing-wa-tiao-tai-jie-er/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: [email protected]

二,青蛙跳台阶二题目与解析

1,题目:

一只青蛙
一次可以跳上1级台阶,
也可以跳上2级,
也可以跳上3级,
……
也可以跳上n级,
那么青蛙跳到一个n级的台阶上总共有多少种跳法?

2,解析:
台阶有1级时,只有1种跳法,f(1)=1

台阶有2级时,有2种跳法:
先跳1级,后跳1次=f(1)
一次跳2级,跳法共1种,值为1
f2 = f(1)+1

台阶有3级时,有3种跳法:
先跳1级,再跳后2级: f(2)
先跳2级,后跳1次: f(1)
一下跳3级: 1
f(3) = f(2)+f(1)+1

以此类推:
f(n) = f(n-1)+f(n-2)+…+f(2)+f(1)+1
f(n-1) = f(n-2)+f(n-3)+…+f(2)+f(1)+1
两个等式相结合,
可以得到:
f(n)  = 2 * f(n-1)
总结方程式:

数列的形式:
1,2,4,8,16,32,64,128,256,512…

三,编写代码

1,递归函数

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 递归函数 返回指定台阶数的跳法 # n: 要跳的台阶数 def jump(n):     if n <= 0:    # 值小于等于0时,返回0,递归终止         return 0     elif n == 1# 值小于等于1时,返回1,递归终止         return 1     elif n == 2# 值小于等于2时,返回2,递归终止         return 2     else:      # 值大于2时,返回跳n-1级的跳法的2倍         return 2 * jump(n - 1)     num = int(input("请输入青蛙要跳的台阶数:")) print(f"跳{num}级台阶,共有跳法{jump(num)}种")

运行结果:

请输入青蛙要跳的台阶数:5
跳5级台阶,共有跳法16种

2,循环

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # 函数 返回指定台阶数的跳法 # n: 要跳的台阶数 def jump(n):     if n == 1:         return 1     elif n == 2:         return 2     pre = 2   # 前1个数是数列中第2个数字     res = 0   # 跳法的数量       for i in range(3, n + 1):     # 从第三级开始,是前面相邻数字的2倍         res = pre * 2    # 得到当前值         pre = res        # 为前一个数字赋值,供下次循环     return res     num = int(input("请输入青蛙要跳的台阶数:")) print(f"跳{num}级台阶,共有跳法{jump(num)}种")

运行结果:

请输入青蛙要跳的台阶数:5
跳5级台阶,共有跳法16种

 

标签:台阶,递归函数,python,青蛙,跳法,算法,num,return
From: https://www.cnblogs.com/architectforest/p/18195527

相关文章

  • python算法:读书
    一,认识递归函数1,什么是递归?递归的工作原理是,如果函数需要处理的问题大小合适,则直接求解并返回结果,否则将问题分解成两个或多个更小的子问题,并对子问题进行相同的处理,直到问题无法分解为止2,什么是递归函数:递归函数(recursivefunction)是指在函数体中可以调用自己的函数3,语......
  • python算法:公交车问题
    一,认识递归函数1,什么是递归?递归的工作原理是,如果函数需要处理的问题大小合适,则直接求解并返回结果,否则将问题分解成两个或多个更小的子问题,并对子问题进行相同的处理,直到问题无法分解为止2,什么是递归函数:递归函数(recursivefunction)是指在函数体中可以调用自己的函数3,语......
  • python算法:借书方案
    一,for循环:1,功能:重复执行同一段代码语法:forindexinrange(n):   #循环体代码index:用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列流程图:2,应用range可以同时指定start和stop,用for遍历并打印1234#指定start和s......
  • python算法:分糖果
    一,while循环:1,功能:重复执行同一段代码语法:while条件表达式:  #循环体当条件表达式的返回值为真时,则执行循环体中的语句,执行完毕后,重新判断条件表达式的返回值,如果表达式返回的结果为假,则退出循环体2,流程图:3,打印从1到1012345#打印从1到1......
  • python算法:平分7筐鱼
    一,for循环:1,功能:重复执行同一段代码语法:forindexinrange(n):   #循环体代码index:用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列流程图:2,应用range可以同时指定start和stop,用for遍历并打印1234#指定start和s......
  • 接口自动化测试框架【python+requests+pytest+excel+allure+jenkins】
    一.在整个框架中需要用到哪些东西?1.python环境安装https://www.python.org/downloads/windows/下载解压后直接安装,选择Addpythontopath2.JAVA环境配置安装包下载地址:https://www.oracle.com/java/technologies/downloads/环境变量设置参数如下:●变量名:JAVA_HOME●变......
  • python算法: 抓交通肇事犯
    一,for循环:1,功能:重复执行同一段代码语法:forindexinrange(n):   #循环体代码index:用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列流程图:2,应用range可以同时指定start和stop,用for遍历并打印1234#指定start和s......
  • 评估统计算法在银行伪造钞票检测中的价值
    数据科学项目 “评估统计算法在银行伪造钞票检测中的价值” by吴同学 目的 这个数据科学项目的目的是提出一种可靠的算法,以便通过光学扫描仪或类似工具,银行可以区分“真钞”和“伪造”钞票。一般来说,光学扫描仪会检测每张钞票的某些特征,并将它们发送到一个算法,......
  • 推荐一款微信公众平台Python开发神器!
    1、引言在当今数字化时代,微信公众平台成为了企业和个人连接用户的重要渠道。为了高效地管理和与用户互动,开发者需要一个强大而灵活的工具。Weixin-Python正是这样一个为微信公众平台量身打造的Python库,它以其简洁的API和丰富的功能赢得了众多开发者的青睐。本文将深入探讨......
  • python函数参数中的**kwargs
    表示传递任意参数,必须放在形参的最后本质就是一个字典在函数内部可以继续进行处理,添加参数,例如:defexample_function(**kwargs):kwargs['db']=1print(kwargs)如果函数b中的形参是指定了名字的参数,并且你将字典以**a的方式传递给该函数,那么字典中的键必须与函......