我正在練習遞回,但不確定我的代碼為什么會失敗。
def isEqual(arr, n):
if(n==1):
return arr[n]
return arr[n-1]==isEqual(arr, n-1)
邏輯很籠統。我假設我有一個方法可以檢查陣列中的所有元素是否直到長度 n-1 都相等,isEqual(arr, n-1)。接下來,我使用 arr[n-1]==isEqual(arr, n-1) 檢查第 n 個元素是否等于前面的元素。
但是,對于基本測驗用例,代碼會失敗,例如 -
arr = [5,5,5,5,5,5]
isEqual(arr, len(arr))
有人能指出我哪里出錯了嗎?
uj5u.com熱心網友回復:
您正在混淆回傳值與相等性檢查。有很多方法可以糾正它,但這里是一個例子
def isEqual(arr, n):
if(n<=0):
return True
return arr[n-1]==arr[n] and isEqual(arr,n-1)
arr = [5,5,5,5,5,5]
print(isEqual(arr, len(arr)-1))
brr = [1,2,3,4,5]
print(isEqual(brr, len(brr)-1))
crr=[False]*5
print(isEqual(crr, len(crr)-1))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/475121.html
標籤:递归
上一篇:Java中 =和=1 的區別
