Python 递归函数

Posted 猿说编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 递归函数

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

以上是关于Python 递归函数的主要内容,如果未能解决你的问题,请参考以下文章

python递归函数

如何在自定义 PyYAML 构造函数中处理递归?

Python的递归函数

nodejs常用代码片段

python开发 随笔补充之递归函数与实例

Python入门教程第25篇 递归函数