Funzione di Ackermann: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
GnuBotmarcoo (discussione | contributi)
m Bot: Fix tag <math>
Riga 12:
oppure:
<br><br>
:<math>f(0,0,z) = z\,</math><br>
:<math>f(0,y+1,z) = f(0,y,z)+1\,</math><br>
:<math>f(1,0,z) = 0\,</math><br>
:<math>f(x+2,0,z) = 1\,</math><br>
:<math>f(x+1,y+1,z) = f(x,[f(x+1,y,z)],z)\,</math>
<br><br>
La funzione di Ackermann è un esempio di [[funzione ricorsiva]] che non è [[funzione primitiva ricorsiva|primitiva ricorsiva]] poiché cresce più velocemente di qualsiasi funzione ricorsiva primitiva.
Riga 22:
Il meccanismo di calcolo della funzione è estremamente semplice quanto pesante dal punto di vista computazionale. La definizione data può essere vista come quella di una famiglia di funzioni al variare di un parametro individuato dalla prima variabile. Per ogni valore del parametro si ha una funzione che è ottenuta iterando la funzione precedente per un numero di volte individuato dalla seconda variabile. In quest'ottica le prime funzioni della famiglia sono funzioni familiari come l'[[addizione]], la [[moltiplicazione]] e la [[potenza (matematica)|potenza]], e successivamente si hanno funzioni sempre più complesse:
 
:<math>f(0,y,z) = y+z\,</math><br>
:<math>f(1,y,z) = y\times z\,</math> (mediante iterazione di <math>z+z+z+...\,</math> per <math>y\,</math> volte)
:<math>f(2,y,z) = z^{y}\,</math> (mediante iterazione di <math>z\times z\times z\times...\,</math> per <math>y\,</math> volte)
:<math>f(3,y,z) = z^{z^{z^{.^{.^{.}}}}}\,</math> (y volte)(mediante iterazione di <math>z^{z^{z^{.^{.^{.}}}}}\,</math> per <math>y\,</math> volte e quindi mediante iterazione di <math>y \times z\,</math> e quindi mediante iterazione di <math>y+z\,</math>)
 
Risulta quindi una funzione con una complessità estremamente elevata anche per valori di input semplici.