UNE ÉNIGME DE PLUS...

cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 - 17 août 2006 à 14:03
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 - 23 août 2006 à 19:29
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39159-une-enigme-de-plus

cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
23 août 2006 à 19:29
Francky: oui je sais, c'est juste que je ne voulais pas surcharger le code avec des vérifications supplémentaires ;-)

Barbichette: Effectivement, d'ailleurs il existe une expression directe en fonction de n de la suite de Fibonacci (qui d'ailleurs fait aussi intervenir le nombre d'or à la puissance n). Ce qui est étonnant avec celle-ci (la mienne), c'est que finallement on fait seulement des soustractions successives pour trouver le résultat, et que l'expression directe en fonction de n fasse intervenir la partie entière d'un irrationnel. En particulier, cette suite permet d'avoir la n-ième décimale du nombre d'or: par exemple le dernier chiffre de u(9) est la 1ère décimale, celui de u(9999) la 4ème, etc...
cs_barbichette Messages postés 220 Date d'inscription lundi 30 octobre 2000 Statut Membre Dernière intervention 15 juillet 2013
23 août 2006 à 12:30
salut a tous...
bon, pour ouvrir une parenthèse sur le nombre d'or,
on l'obtient aussi avec la suite de Fibonnachi. (La suite u(n)=u(n-1)+u(n-2) avec u(0)=1 et u(1)=1)
Et bien la suite v(n)=u(n)/u(n-1) tend vers le nombre d'or...
voilà, c'était ma petit contribution pour la fin des vacances...
Barbichette
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
22 août 2006 à 17:07
Salut Foman

Source rigolote mais je penses qu'il y a 2 beugs : si tu prends n=500 par exemple l'application ne retourne aucun résultat. En prenant un entier négatif, l'application se fige. Ce n'est pas grand chose

PDF : Merci pour la démo ;).
Oui, la dérécursivation en effet.
Remarque que cette méthode n'augmente pas forcément les performances (dans ce cas là si), c'est pour cela que je ne l'ai pas citée. Mais bon, sur des procédures récursives un peu plus complexe, je préfère largement les laisser "tel quel" car la dérécursivation rend le code nettement mons lisible et compréhensible
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
17 août 2006 à 16:31
Non, ce n'est pas moi qui l'ai "trouvée", je l'ai juste vue une fois dans un exo de maths sur la récurrence, mais j'ai trouvé l'expression en fonction de n tout seul (en calculant u(10000), je me suis rendu compte que ça me rappelait un nombre que j'avais déjà vu...). Ceci dit, c'est pas ça qui va révolutionner les maths!

Au niveau optimisation, on pourrait "dérécursifier" la suite en utilisant un stockage des valeurs intermédiaires:

var
T:array[0..10000] of Integer;
n:Integer;
begin
T[0]:=0;
for n:=1 to High(T) do
T[n]:=n-T[T[n-1]];
end;

Ca permet de ne pas utiliser la pile d'appels récursifs, et ça va infiniment plus vite!
Intéréssant mais un chouilla trop compliqué pour moi ^^
Et cette fois, il n'y a rien à optimiser :-(

Ceci dit, c'est un bon travail.
Si c'est toi qui a trouvé cette suite , alors bravo !

A+
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
17 août 2006 à 14:03
Bon rien à faire, la mise en valeur de la syntaxe bugge toujours...
Rejoignez-nous