Une définition de fonction est récursive si son corps contient une expression d'invocation d'elle-même, dite invocation récursive . Les définitions récursives permettent souvent de transcrire de façon quasiment littérale certaines définitions mathématiques, dites récurrentes. Ainsi la transcription de l'identité
package exemples;
class Récursion {
static int sommerEntiers(int m) {
return (m <= 0) ? 0 : sommerEntiers(m-1) + m;
// invocation récursive
}
public static void main(String[] args) {
System.out.println("somme de 1 à 3 = " + sommerEntiers(3));
// --> 6
}
}
Le mécanisme d'invocation des fonctions s'applique en particulier aux
fonctions définies récursivement. Par exemple, l'invocation
sommerEntiers(3) dans le corps de main provoque la suite
d'invocations :
L'évolution de la pile pendant cette invocation est la suivante :