以下代碼來自 geeks for geeks -鏈接 當我在 pythontutor.com 上逐行可視化代碼時,我了解到通過遞回 countVowels() 函式將 n 減為 1。但是,我不明白 n 如何通過函式 isVowel() 的遞回再次增加。
P2 - 我也不明白為什么 pythontutor 上的第 27 步回傳到 isVowel() 并在 n = 1 的情況下已經執行該行時將 n 增加到 2。我的意思是它應該直接轉到下一個回傳函式(return(countVowels(str, n-1) isVowel(str[n-1]))
請幫助我出去。
def isVowel(ch):
return ch.upper() in ['A', 'E', 'I', 'O', 'U']
#count no of vowels from 0 to n
def countVowels(str, n):
if(n==1):
return isVowel(str[n-1])
return(countVowels(str, n-1) isVowel(str[n-1]))
str = 'abc de'
print(str[0])
print(countVowels(str, len(str)))
uj5u.com熱心網友回復:
看看如何評估這些函式:
countVowels("abc", 3) = countVowels("abc", 2) isVowel("abc"[2])
= (countVowels("abc", 1) isVowel("abc"[1])) isVowel("abc"[2])
= ((isVowel("abc"[0])) isVowel("abc"[1])) isVowel("abc"[2])
= ((True) False) False
= 1
遞回呼叫countVowels必須首先解決,然后isVowel()才被評估,因為 Python 從左到右、從內到外評估運算式(例如,在嵌套運算式的情況下(x 1)**2)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/475118.html
