zoukankan      html  css  js  c++  java
  • Python 递归函数

    目录

    零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门

    一个函数在函数体内部调用自己,这样的函数称为递归函数递归的次数在 Python 是有限制的,默认递归次数是 997 次,超过 997 次会报错:RecursionError.

    一.Python 递归函数案例

    1.Python 递归函数案例一

    计算数字 N 的阶乘(举个栗子:9 的阶乘 = 9*8*7*6*5*4*3*2*1)

    # !usr/bin/env python
    # -*- coding:utf-8 _*-
    
    """
    @Author:猿说编程
    @Blog(个人博客地址): www.codersrc.com
    @File:Python 递归函数.py
    @Time:2021/3/31 07:37
    @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    
    """
    
    # 使用递归函数实现阶乘
    # 举个例子,计算9的阶乘:9! = 9*8*7*6*5*4*3*2*1 = 362880
    def func(n):
        if n==1:  # 结束条件:当 n == 1 结束递归调用
            return 1
        else:
            return n*func(n-1)
    print(func(9))
    
    
    # 使用for循环计算阶乘
    result= 1
    # i 取值: 9 8 7 6 5 4 3 2 1 不包括0
    for i in range(9,0,-1):
        result = result * i
    print(result)
    
    '''
    输出结果:
    362880
    362880
    
    '''
    

    可能对于案例一,你会觉得好像所谓的递归也没什么卵用的样子,我用 for 循环也能实现,那么我们继续往下看案例二或者案例三。

    2.Python 递归函数案例二

    一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第 10 次落地时,共经过多少米?第 10 次反弹多高?

    # !usr/bin/env python
    # -*- coding:utf-8 _*-
    """
    @Author:猿说编程
    @Blog(个人博客地址): www.codersrc.com
    @File:Python 递归函数.py
    @Time:2021/3/31 07:37
    @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    
    """
    
    def heigthM(num, heigth, sum):
        sum += heigth
        heigth /= 2 #第一次返回高度50
        print(heigth, sum) # 查看每次返回的高度和经过多少米
        if num == 1:
            return heigth ,sum
        else:
            sum += heigth # 返回到最高点时,经过多少米需要加上高度
            return heigthM(num - 1, heigth, sum)
    print("第10次的反弹高度和累计经历的米数分别是:",heigthM(10, 100, 0)) #num是次数,heigth是高度,sum是经过多少米
    
    '''
    输出结果:
    3.125 287.5
    1.5625 293.75
    0.78125 296.875
    0.390625 298.4375
    0.1953125 299.21875
    0.09765625 299.609375
    第10次的反弹高度和累计经历的米数分别是: (0.09765625, 299.609375)
    
    '''
    

    小窍门: 函数可以同时返回多个值,以元组的形式返回!!

    3.Python 递归函数案例三

    猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?

    # !usr/bin/env python
    # -*- coding:utf-8 _*-
    """
    @Author:猿说编程
    @Blog(个人博客地址): www.codersrc.com
    @File:Python 递归函数.py
    @Time:2021/3/31 07:37
    @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    
    """
    
    def monkey(n):
        if n == 1:
            return 1
        else:
            return (monkey(n - 1) + 1) * 2
    print(monkey(10))
    
    '''
    输出结果:
    1534
    '''
    

    二.Python 递归函数总结

    • 1.递归函数一定要有结束条件,否则无限循环;
    • **2.默认递归次数是 997 次,超过 997 次会报错:RecursionErro****r**;

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-593RSsQw-1623222718682)(https://www.codersrc.com/wp-content/uploads/2021/03/c81e728d9d4c2f6-7.png “Python 递归函数-猿说编程”)]

    三.猜你喜欢

    1. Python 配置环境
    2. Python 变量
    3. Python 运算符
    4. Python 条件判断 if/else
    5. Python while 循环
    6. Python break
    7. Python continue
    8. Python for 循环
    9. Python 字符串
    10. Python 列表 list
    11. Python 元组 tuple
    12. Python 字典 dict
    13. Python 条件推导式
    14. Python 列表推导式
    15. Python 字典推导式

    未经允许不得转载:猿说编程 » Python 递归函数

    本文由博客 - 猿说编程 猿说编程 发布!

  • 相关阅读:
    Exception和Error有什么区别?
    网络流量劫持的含义
    安全术语:
    加载相关
    10、接到任务后的整个测试前准备流程总结
    fiddler工具栏数据解释
    HTTP的请求头标签 If-Modified-Since
    VueStudyDemo
    Vue从入门到放弃
    TypeScript初体验
  • 原文地址:https://www.cnblogs.com/shuopython/p/14892144.html
Copyright © 2011-2022 走看看