我很想遞回地將陣列中的值相乘,但在運行以下代碼后出現錯誤:
def multAll(k,A) :
multAllRec(k,A,0)
def multAllRec(k,A,i) :
if i<len(A):
A[i] *= k
multAllRec(k, A, i 1)
multAll(10,[5,12,31,7,25])
錯誤:RecursionError:呼叫 Python 物件時超出了最大遞回深度
uj5u.com熱心網友回復:
你應該對returna做點什么value。在 at list 內有一個Conditional陳述句來防止無限回圈遞回呼叫。
def multAll(k,A) :
multAllRec(k,A,0)
return A
def multAllRec(k,A,i) :
if i<len(A):
A[i] *= k
multAllRec(k, A, i 1)
else:
return A
B=multAll(10,[5,12,31,7,25])
print(B)
[輸出]
[50, 120, 310, 70, 250]
uj5u.com熱心網友回復:
你可以使用這樣的東西:
def mult_all_rec(k, A, i=0):
if i < len(A):
A[i] *= k
mult_all_rec(k, A, i 1)
return
some_list = [5, 12, 31, 7, 25]
mult_all_rec(10, some_list)
print(some_list)
在這里,不需要multAll方法,可以通過將默認值分配給i0來完成此遞回。(如def mult_all_rec(k, A, i=0):)
如果不是 i < len(A),則需要return. 這稱為base condition.
每個遞回都必須有一個base condition.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349067.html
上一篇:在未排序的陣列中找到第n個最小值
