Bonjour,
J'ai pourtant un peu d'expérience avec PHP, mais quelque chose m'échappe.
Ce code retourne "a", "b" ou "c" (en l'occurrence ici "b").
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 function collatz($n, $a, $b, $i = 0) { $i++; if($i > 2000) { echo "a"; } elseif($n == 1) { echo "b"; } elseif($n > 1000000) { echo "c"; } else { // Odd or even if($n & 1) { collatz($a * $n + $b, $a, $b, $i); } else { collatz($n / 2, $a, $b, $i); } } } collatz(7, 3, 1);
La fonction retourne NULL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 function collatz($n, $a, $b, $i = 0) { $i++; if($i > 2000) { return "a"; } elseif($n == 1) { return "b"; } elseif($n > 1000000) { return "c"; } else { // Odd or even if($n & 1) { collatz($a * $n + $b, $a, $b, $i); } else { collatz($n / 2, $a, $b, $i); } } } echo collatz(7, 3, 1);
Je ne comprends pas pourquoi la deuxième version ne fonctionne pas. Est-ce qu'il y a quelque chose avec les fonctions récursives qui m'échappe ?
Merci par avance pour votre aide !
Partager