Source: https://www.lri.fr/~hivert/COURS/CFA-L3/02-Recursivite.pdf