Il est possible de calculer la fonction récursive totale calculable ackermann(m,n)
avec les arguments m>=4
et n>=1
en python sans dépasser la profondeur maximale de récursivité?Il est possible de calculer la fonction ackermann récursive (m, n) avec les arguments m> = 4 et n> = 1 en python sans dépasser la profondeur de récursion maximale?
def ackermann(m,n):
if m == 0:
return n+1
if n == 0:
return ackermann(m-1,1)
else:
return ackermann(m-1,ackermann(m,n-1))
ackermann(4,1)
Vous savez que l'ackerman a été intentionnellement défini pour montrer quelque chose qui augmente en grande partie qu'il ne pourrait pas être défini par des fonctions récursives primitives? –
Python n'est pas bon pour la récursivité. Il n'y a pas d'élimination par appel de fin, et donc, il est toujours sujet à un débordement de pile. Vous pouvez augmenter la profondeur de max-récursivité, mais c'est là pour * empêcher * le débordement de pile ... –
* ackermann (4, 2) * a presque vingt-mille chiffres décimaux - tout comme la profondeur d'imbrication) définition littéralement. – greybeard