Python 递归函数 - Python零基础入门教程

2021年6月19日 14点热度 0条评论 来源: 猿说编程

目录

零基础 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 递归函数

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

    原文作者:猿说编程
    原文地址: https://www.cnblogs.com/shuopython/p/14892144.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。