1. 程式人生 > 其它 >Python 遞迴函式 - Python零基礎入門教程

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 遞迴函式

本文由部落格 - 猿說程式設計 猿說程式設計 釋出!