No, il maccartismo non c’entra. Questo McCarthy (John) è l’informatico che ha realizzato il Lisp, oltre che essere un pioniere dell’intelligenza artificiale. La “Funzione 91” è una funzione ricorsiva definita sugli interi in questo modo:
$$ M(n) = \left\{\begin{matrix} n – 10, & \mbox{se }n > 100\mbox{ } \\ M(M(n+11)), & \mbox{se }n \le 100\mbox{ } \end{matrix}\right. $$
Notate come la ricorsione non sia semplice, come per esempio nel caso del fattoriale che possiamo definire come $n! = n \times (n-1)!$ (e naturalmente $0! = 1$, per avere un punto in cui termina la ricorsione). Qui invece dobbiamo applicare due volte la definizione della funzione.
Chiaramente se $ n \gt 100 $ non ci sono problemi a calcolare $M(n)$: basta togliere 10. Anche per $n = 100$ facciamo in fretta: $ M(100) = M(M(100+11)) = M(M(111)) = M(101) = 91$. Il bello arriva quando proviamo a calcolare il suo valore per i numeri minori di 100. Proviamo per esempio con $ n = 42$: preparatevi a un ottovolante.
M(42) = M(M(42+11)) = M(M(53))
= M(M(M(64)))
= M(M(M(M(75))))
= M(M(M(M(M(86)))))
= M(M(M(M(M(M(97))))))
= M(M(M(M(M(M(M(108)))))))
= M(M(M(M(M(M(98))))))
= M(M(M(M(M(M(M(109)))))))
= M(M(M(M(M(M(99))))))
= M(M(M(M(M(M(M(110)))))))
= M(M(M(M(M(M(100))))))
= M(M(M(M(M(91)))))) (l'abbiamo visto sopra...)
= M(M(M(M(M(M(102))))))
= M(M(M(M(M(92))))))
= M(M(M(M(M(M(103))))))
= M(M(M(M(M(93))))))
= M(M(M(M(M(M(104))))))
= M(M(M(M(M(94))))))
= M(M(M(M(M(M(105))))))
= M(M(M(M(M(95))))))
= M(M(M(M(M(M(106))))))
= M(M(M(M(M(96))))))
= M(M(M(M(M(M(107))))))
= M(M(M(M(M(97))))))
= M(M(M(M(M(M(108))))))
Toh. Avevamo già trovato $M(M(M(M(M(M(M(108)))))))$ con un livello di parentesi in più. Saltando un po’ di passaggi continuiamo con
M(42) =
...
= M(M(M(M(M(M(M(108)))))))
...
= M(M(M(M(M(M(108))))))
...
= M(M(M(M(M(108)))))
...
= M(M(M(M(108))))
...
= M(M(M(108)))
...
= M(M(108))
...
= M(98)
= M(M(109))
= M(99)
= M(M(110))
= M(100)
= M(M(111))
= M(101)
= 91
È facile dimostrare per induzione (partendo dalla undicina $90 ≤ n \le 101$ e scendendo man mano di 11 in 11) che applicare $M$ a un qualunque numero intero minore di 100 porta a 91 (capito il perché del suo nome?). In pratica, la nostra funzione se ne sta piatta da meno infinito a 101, e poi diventa lineare. Strana, no?
Aggiungo solo che la funzione è usata come test per verificare i programmi automatici di verifica del software, proprio per la sua struttura così strana.
Ultimo aggiornamento: 2025-09-25 21:47

