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

python算法:青蛙跳台阶

时间:2024-05-15 10:43:51浏览次数:27  
标签:台阶 递归函数 python 青蛙 跳法 算法 num return

一,认识递归函数

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

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

3,语法

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

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

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

二,青蛙跳台阶的题目和解析

1,题目

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

2,解析

总结:

当青蛙第一次跳一级台阶时,
有f(n-1)种跳法,
当青蛙第一次跳二级台阶时,
有f(n-2)种跳法
所以在n>2时,
返回f(n-1)+ f(n-2)即可

注意它的形式:
1,2,3,5,8,13,21, 34,55,89…
与斐波那契数列很相似,
它也可以用循环来解决:

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

三,编写代码

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级和跳n-2级时的和         return jump(n - 1) + jump(n - 2)     num = int(input("请输入青蛙要跳的台阶数:")) print(f"跳{num}级台阶,共有跳法{jump(num)}种")

运行结果:

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

2,循环实现

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # n: 要跳的台阶数 def jump(n):     if n == 1:         return 1     elif n == 2:         return 2     pre1 = 1  # 前两个数中的第1个     pre2 = 2  # 前两个数中的第2个     res = 0   # 跳法的数量       for i in range(3, n + 1):         res = pre1 + pre2           pre1 = pre2         pre2 = res     return res     num = int(input("请输入青蛙要跳的台阶数:")) print(f"跳{num}级台阶,共有跳法{jump(num)}种")

运行结果:

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

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

相关文章

  • python算法:马克思的数学题
    一,for循环:1,功能:重复执行同一段代码语法:forindexinrange(n):   #循环体代码index:用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列流程图:2,应用range可以同时指定start和stop,用for遍历并打印1234#指定start和s......
  • python算法:爱因斯坦阶梯
    一,for循环:1,功能:重复执行同一段代码语法:forindexinrange(n):   #循环体代码index:用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列流程图:2,应用range可以同时指定start和stop,用for遍历并打印1234#指定start和s......
  • python算法:百钱买百鸡
    一,for循环:1,功能:重复执行同一段代码语法:forindexinrange(n):   #循环体代码index:用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列流程图:2,应用range可以同时指定start和stop,用for遍历并打印1234#指定start和s......
  • python算法:鸡兔同笼
    一,for循环:1,功能:重复执行同一段代码语法:forindexinrange(n):   #循环体代码index:用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列流程图:2,应用range可以同时指定start和stop,用for遍历并打印1234#指定start和s......
  • python算法: 棋盘上的麦粒(舍罕王赏麦)
    一,for循环:1,功能:重复执行同一段代码语法:forindexinrange(n):   #循环体代码index:用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列流程图:2,应用range可以同时指定start和stop,用for遍历并打印1234#指定start和s......
  • python算法:杨辉三角
    一,认识递归函数1,什么是递归?递归的工作原理是,如果函数需要处理的问题大小合适,则直接求解并返回结果,否则将问题分解成两个或多个更小的子问题,并对子问题进行相同的处理,直到问题无法分解为止2,什么是递归函数:递归函数(recursivefunction)是指在函数体中可以调用自己的函数3,语......
  • python算法:n皇后
    一,认识递归函数1,什么是递归?递归的工作原理是,如果函数需要处理的问题大小合适,则直接求解并返回结果,否则将问题分解成两个或多个更小的子问题,并对子问题进行相同的处理,直到问题无法分解为止2,什么是递归函数:递归函数(recursivefunction)是指在函数体中可以调用自己的函数3,语......
  • 分类算法中精确率、召回率、F1 Score的理解
    在机器学习和深度学习中,将分类任务的预测结果分为以下四种,被称作混淆矩阵:TruePositive(TP):预测出的为正例,标签值也为正例,预测正确FalseNegative(FN):预测出的为负例,标签值为正例,预测错误FalsePositive(FP):预测出的为正例,标签值为负例,预测错误TrueNegative(TN):预测出的为负......
  • python算法:角谷猜想
    一,认识递归函数1,什么是递归?递归的工作原理是,如果函数需要处理的问题大小合适,则直接求解并返回结果,否则将问题分解成两个或多个更小的子问题,并对子问题进行相同的处理,直到问题无法分解为止2,什么是递归函数:递归函数(recursivefunction)是指在函数体中可以调用自己的函数3,语......
  • python算法:水仙花数
    一,for循环:1,功能:重复执行同一段代码语法:forindexinrange(n):   #循环体代码index:用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列流程图:2,应用range可以同时指定start和stop,用for遍历并打印1234#指定start和s......