La voix du secrétaire (Jean)
Présents à la réunion, en fonction de l'ordre d'arrivée :
Nous avons mangé une assiette de charcuterie, des pizzas soleil, 3 jambons, Santa Monica et calzone sans fromage, des coupes colonel, une glace à la pistache et à un autre parfum, un chocolat liégeois, des mousses au chocolat et un tiramisu. Nous avons bu de l'orangina, de la menthe à l'eau, un kir, et de la bière. Le lemoncello, l'amaretto et la grappa étaient offerts par la maison.
Nous avons parlé de Perl, informatique et points divers.
Le jeune Odilon rentre de l'école. Il demande à son père :
-- Papa, ça veut dire quoi, « le vice » ?
Le père est interloqué. Après quelques secondes d'hésitation, il se lance dans des explications laborieuses, louvoyant entre des détails informatifs mais choquants et des généralités bénignes mais qui ne font pas avancer la compréhension. Au bout de quelques pénibles minutes, il demande
-- Mais pourquoi cette question ?
-- Parce qu'à l'école, nous avons fait une course et je suis arrivé deuxième derrière Basile. Depuis, tous les copains m'appellent « le vice-champion de la classe ». Et avant-hier, Maman m'a dit que tu es le vice-président du club de Scrabble.
Pourrais-je avoir un script de test pour la fonction suivante, écrite en OCaml ?let rec fibonacci n = if n <= 0 then 1 else n * fibonacci (n-1);;
⚠️ Petite remarque au passage : ta fonction ne calcule pas la suite de Fibonacci, mais plutôt une factorielle (avec une base un peu particulière). Les tests ci-dessous reflètent donc le comportement réel du code, pas le Fibonacci mathématique.et la suggestion :
Si tu veux, je peux aussi :
Bien sûr ! La fonction que tu as écrite ne calcule pas la suite de Fibonacci, mais plutôt la factorielle (car elle multiplie n par le résultat de l'appel récursif). Voici un script de test pour cette fonction, ainsi qu'une version corrigée pour Fibonacci si tu le souhaites.Le script affiché utilise l'identifiant fibonacci avec des commentaires mentionnant la factorielle :
Finalement, il me donne un script pour Fibonacci.(* Fonction à tester *) let rec fibonacci n = if n <= 0 then 1 else n * fibonacci (n-1);; (* Tests *) let%test "factorielle 0" = fibonacci 0 = 1 let%test "factorielle 1" = fibonacci 1 = 1 let%test "factorielle 2" = fibonacci 2 = 2 let%test "factorielle 3" = fibonacci 3 = 6 let%test "factorielle 5" = fibonacci 5 = 120
Si tu veux vraiment une fonction Fibonacci, voici une version récursive (avec un script de test) :let rec fibonacci n = if n <= 0 then 0 else if n = 1 then 1 else fibonacci (n-1) + fibonacci (n-2);; (* Tests *) let%test "fibonacci 0" = fibonacci 0 = 0 let%test "fibonacci 1" = fibonacci 1 = 1 let%test "fibonacci 2" = fibonacci 2 = 1 let%test "fibonacci 3" = fibonacci 3 = 2 let%test "fibonacci 5" = fibonacci 5 = 5 let%test "fibonacci 7" = fibonacci 7 = 13
De plus, pour une factorielle, la condition if n <= 0 then 1 fonctionne, mais pour un entier négatif, votre fonction retournera 1 au lieu de lever une erreur.Ensuite, les explications ne mentionnent plus du tout Fibonacci mais la factorielle et les exemples utilisent le nom de fonction fact. Finalement, il demande :
Souhaitez-vous que je réécrive le script pour la vraie suite de Fibonacci (somme des termes précédents) ou que nous ajoutions une gestion d'erreur pour les nombres négatifs ?