我做的工作是:計算一個數字的出現次數在列表中使用遞歸
鑑於int數組,計算遞歸的次數,值11只出現在陣列中的數量。我們將使用只考慮從給定索引開始的數組部分的約定。這樣,遞歸調用可以傳遞索引+1來向下移動數組。
我需要遞歸做到這一點。我在這方面頗爲新穎,但我在技術上使其發揮作用。 我有以下幾點:
def array11(arr, index, cnt=0, num=0):
if(cnt==len(arr)-index):
print("yay!!! number 11 appears %d times"%num)
return
elif(arr[index:][cnt]==11):
num+=1
cnt+=1
array11(arr,index,cnt,num)
else:
cnt+=1
array11(arr,index,cnt,num)
但我覺得我這樣做是出於某種原因加上了「CNT」和「民」使用默認值參數一種廉價的方式。我只是不知道如何通過沒有計數器的「arr」數組!
所以這個東西可以接受嗎?你會以同樣的方式做到嗎?
由於事先
這幾乎肯定是基於觀點的,因爲它是有效的代碼,可能更適合代碼評審。也就是說,數組不是遞歸數據類型(與單向鏈表相對),所以這看起來像是一個非常自然的解決方案,給定數據類型。另外,它是尾遞歸的,所以它可以編譯成循環,這很好。 –
+1在提問前進行嘗試。我編輯了你的頭銜以反映手頭的問題。 – timgeb
沒問題,謝謝輸入Joshua – RRR