CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[CAML] Fibonacci

soleil2009
soleil2009
Niveau 3
09 novembre 2008 à 00:58:32

j'essaye de programmer sur caml la suite de fibonacci

voilà ce que j'ai écrit

let fiboit(n) = let fibo0 = ref 1; let fibo1 = ref 1; let fibo = ref 1 in
for i = 2 to n do
fibo := !fibo0 + !fibo1
fibo0:= !fibo1
fibo1:= !fibo
done;
!fibo;;

mais cmal me dit que c'est pas bon !!
mais c bon, non ?

isukthar
isukthar
Niveau 10
09 novembre 2008 à 14:57:01

En Caml fonctionnel tu as ça:
let rec fibo n = match n with 1 -> 1 | 2 -> 1 | _ -> fibo(n-1)+fibo(n-2);;

en impératif, ton programme s'écrit:
let fiboit(n) = let fibo0 = ref 1 and fibo1 = ref 1 and fibo = ref 1 in
for i = 2 to n do
fibo := !fibo0 + !fibo1;
fibo0:= !fibo1;
fibo1:= !fibo;
done;
!fibo;;

Mais il donne un résiltat faux.

dnob700
dnob700
Niveau 10
11 novembre 2008 à 21:34:44

Tu as juste oublier quelques points virgules dans ton programme. Cela dit, quand Caml te dit que ce n'est pas bon, tu ferais mieux de nous donner le messages d'erreur en question si tu viens chercher de l'aide (et au passage, croire le message d'erreur) plutôt que nous dire que le compilo se trompe.

C'est extrêmement rare qu'il y ai des erreurs dans le compilo Caml, donc tu ne risque pas de tomber dessus.

mephesto
mephesto
Niveau 1
15 décembre 2008 à 20:05:03

C'est vraiment trash ton programme, ceci me semble beaucoup plus simple :
let rec fib (n:int)=
match (n<2) with
|true->1
|_->fib(n-1)+fib(n-2);;

dnob700
dnob700
Niveau 10
15 décembre 2008 à 23:16:43

en même temps son programme était itératif à base de boucle. Peut-être qu'il n'avait pas encore vu ce que c'était qu'un programme récursif, donc ton programme ne peut pas vraiment être comparé en terme de simplicité avec le sien

deepblue
deepblue
Niveau 16
15 décembre 2008 à 23:38:58

La récursivité est plus longue et le bouclage Fibonacci ^^

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment