考慮下面的代碼:理解遞歸函數調用
def print_mah(n):
if n <= 0:
return
else:
print('mah')
print_mah(n-1)
print_mah(3)
這裏的Python檢查是否n是小於或等於0時,它發現,這是假所以它打印「麻將」並調用相同函數與n-1直到n等於0,所以'mah'被打印3次。
但是考慮這個操作的代碼:
def print_mah(n):
if n <= 0:
return
else:
print_mah(n-1)
print('mah')
print_mah(3)
Python的檢查,如果n小於或等於0時,它發現,這是假所以用n-1再次調用相同的功能,和' mah'也打印3次。
我的問題是,爲什麼「麻將」不打印只是一個時間,換句話說,爲什麼print_mah不叫其中n = 2,那麼Python認定條件爲假,所以它與調用它n = 1,發現條件是False,所以它用n == 0調用它,發現條件是真,所以函數返回,之後'mah'被打印出來,只有一次。
兩個版本都有打印語句。一路打印下來。一路上打印它。你誤讀了這個條件 - 它檢查遞歸是否完成。所有其他案件涉及印刷品。 –