Python 递归函数

ChatGPT 3.5 国内中文镜像站免费使用啦

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

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

图片[1]-Python 递归函数-猿说编程

一.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 递归函数-猿说编程

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 递归函数-猿说编程

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
'''
图片[4]-Python 递归函数-猿说编程

二.Python 递归函数总结

  • 1.递归函数一定要有结束条件,否则无限循环;
  • 2.默认递归次数是997次,超过997次会报错:RecursionError
图片[5]-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 字典推导式

ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞2 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容