Une fonction récursive est une fonction qui s'appelle elle-même
```
...
...
@@ -47,12 +47,11 @@ def f():
import sys
l = sys.getrecursionlimit()
sys.setrecursionlimit(60)
sys.setrecursionlimit(45)
```
```{code-cell} ipython3
:tags: [raises-error]
:tags: [remove-stderr, copious-output]
f()
```
...
...
@@ -72,19 +71,23 @@ Ce problème est similaire au problème de la boucle `while` où la condition n'
+++
```{margin}
On peut signaler la présence d'acronymes récursifs en informatique, comme GNU is Not Unix ou PHP Hypertext Processor.
````{margin}
```{note} Acronymes récursifs
On peut signaler la présence d'acronymes récursifs en informatique, comme GNU is Not Unix ou PHP Hypertext Processor, ou encore VISA.
```
````
+++
Attention à la récursivité non terminale :
````{margin}
Attention à la récursivité non terminale, par exemple dans un interpréteur type bash.
```shell
:(){ :|:& };:
```
Le code suivant définit une fonction nommée `:`. Cette fonction s'appelle elle-même sans condition d'arrêt, mais de plus, elle envoie sa sortie standard sur l'entrée standard d'une nouvelle instance d'elle même. Cette dernière instance est mis en _background_ avec le `&`.
````
```{margin}
En bash, la définition d'une fonction se fait avec `f(var) { echo $var }` et s'appelle avec `f var`.