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 遞歸函數

本文由博客 - 猿說編程 猿說編程 發布!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM