Python 递归函数 - 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 递归函数

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿说编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值