如何在非尾遞歸中轉換此函數? 在此先感謝。如何在非尾遞歸中轉換尾遞歸
def recursive(values,names, aux, maxim, index_of_max, i, j):
if j == len(values) and i == len(values)-1:
return order(values, names, aux, maxim, index_of_max)
elif j == len(values):
i+=1
return recursive(values,names, aux, maxim, index_of_max, i, i+1)
elif values[i] >= values[j]:
return recursive(values,names, aux, maxim, index_of_max, i, j+1)
else:
aux[j] = max(aux[i]+1, aux[j])
if aux[j] > maxim:
return recursive(values,names, aux, aux[j], j, i, j+1)
else:
return recursive(values,names, aux, maxim, index_of_max, i, j+1)
我不知道如何傳遞的參數在我的功能在非尾遞歸
你知道Python不會優化尾部調用嗎? –
該函數已經是尾遞歸的了,因爲Python中的任何函數都可以是尾遞歸的,因爲cpython不能有效地支持尾遞歸。 –
無論語言是否支持TCO,該函數仍然是尾遞歸。 –