diff options
| author | Anhgelus Morhtuuzh <anhgelus@anhgelus.world> | 2025-02-21 17:50:16 +0100 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <anhgelus@anhgelus.world> | 2025-02-21 17:50:25 +0100 |
| commit | 77bfb2ccd3152c1f41d43dc192ba86ca8fd0f72f (patch) | |
| tree | 798ab77b1c1608ef8cc6e56f3d12778c0844b03b /semestre 2/informatique/6- récursion.md | |
| parent | a1a5447b8b040b100bad89766066ae4ba8d6d920 (diff) | |
Ajout de la semaine des cours du 14 au 21 février
Diffstat (limited to 'semestre 2/informatique/6- récursion.md')
| -rw-r--r-- | semestre 2/informatique/6- récursion.md | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/semestre 2/informatique/6- récursion.md b/semestre 2/informatique/6- récursion.md new file mode 100644 index 0000000..7ce5af6 --- /dev/null +++ b/semestre 2/informatique/6- récursion.md @@ -0,0 +1,45 @@ +--- +tags: + - sorbonne + - informatique +semestre: 2 +--- +Une fonction récursive est une fonction qui s'appelle elle-même, e.g. +```c +int somme(int n){ + if (n == 0) return 0; + return somme(n-1) + n; +} +``` + +Besoin d'avoir une hypothèse de récurrence quand on fait une récursion +|> besoin d'avoir une convergence, sinon la récursion est infinie + +| Indice | = | valeur | +| ---------------- | --- | ---------------------- | +| (1) somme_int(3) | = | 3+somme_int(2) | +| (2) | = | 3+(2+somme_int(1)) | +| (3) | = | 3+(2+(1+somme_int(0))) | +| (4) | = | 3+(2+(1+0)) | +| (5) | = | 6 | +La pile ressemble à la même chose que le tableau + +Si l'appel est trop vénère, alors il remplit la mémoire et provoque une erreur + +Autre exemple : +```c +int factoriel(int n){ + if (n <= 1) return 1; + return factoriel(n-1) * n; +} +``` + +La suite de Fibonacci, +$$ F_n=\left\{\begin{matrix}1&\text{si $n=0$ ou $n=1$}\\F_{n-1}+F_{n-2}&\text{sinon}\end{matrix}\right. $$ +sert à faire une dichotomie plus rapide en pratique (mais pas en théorie) +```c +int fibonacci(int n){ + if (n <= 1) return 1 + return fibonacci(n-1)+fibonacci(n-2) +} +```
\ No newline at end of file |
