Les Snippets

Connexion

Fibonacci

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 16/11/2006 08:33:50 et initié par Renfield [Liste]
Date de mise à jour : 22/11/2006 22:33:35
Vue : 11784
Catégorie(s) : Maths
Langages dispo pour ce code :
- VB6, VBA
- C# 1.x, C# 2.x
- Javascript
- ObjectiveCaml
- C++
- C
- Perl
- PHP 3, PHP 4, PHP 5
- Python
- Java
- C
- C



Langage : VB6 , VBA
Date ajout : 16/11/2006
Posté par Renfield [Liste]
Private Function Fibonacci(ByVal n As Long) As Long
Dim n1 As Long
Dim n2 As Long
Dim i As Long
    If n > 0 Then
        If n <= 2 Then
            Fibonacci = 1
        Else
            n1 = 1
            n2 = 1
            For i = 3 To n - 1
                If i And 1 Then
                    n1 = n1 + n2
                Else
                    n2 = n1 + n2
                End If
            Next i
            Fibonacci = n1 + n2
        End If
    End If
End Function
Langage : C# 1.x , C# 2.x
Date ajout : 22/11/2006
Posté par Bidou [Liste]
DateMAJ : 22/11/2006

// Renvoie le énième terme de la suite de Fibonacci
private static long Fibonnaci(int term) 
{
   long n1 = 1; 
   long n2 = 1;

   if (term > 0) 
   {
      if (term <= 2) return 1; 
      else
      {
         for (int i = 3; i < term; i++) 
         {
             if ((i & 1) == 0) n1 += n2;           
             else n2 += n1; 
         }
         return n1 + n2; 
      }
   }
   return -1; 
}








Langage : Javascript
Date ajout : 06/04/2007
Posté par stfou [Liste]
function Fibbonacci(level)
{
if(level)
{
var n1=1;
var n2=1;
var n3=0;
var tab=[1,1]
for(i=0;i<level;i++)
{
n3=n1+n2;
n1=n2;
n2=n3;
tab.push(n3)
}
this.array=tab
this.number=tab*Math.pow(10,-(tab.length-1));
}
else
{
return false;
this.number=null;
this.array=null;
}
}
var suite_de_fibbonacci=new Fibbonacci(18);
var tableau_de_valeur=suite_de_fibbonacci.array;
var nombre_de_fibbonnacci=suite_de_fibbonnaci.number;
Remarque :
S'utilise avec new Fibbonacci(level)
et contient les propriétés number et array, array étant un tableau contenant la suite et number un nombre décimal;
la variable level indique le nombre d'itération de la suite exemple :
1.1235813 = 1+1+2+3+5+8 donc 6 itérations (level 6)
Langage : ObjectiveCaml
Date ajout : 02/06/2007
Posté par Cacophrene [Liste]
(* Récursive terminale. Exemple d'utilisation : fibonacci 10 donne 55 *)
let fibonacci = function
    | n when n <= 2 -> 1
    | n -> let rec loop (x, y) = function
        | i when i = n -> x + y
        | i when i land 1 = 1 -> loop (x + y, y) (i + 1)
        | i -> loop (x, x + y) (i + 1)
    in loop (1, 1) 3
     

Langage : C++
Date ajout : 04/06/2007
Posté par coucou747 [Liste]
#include <iostream>
template <int N> inline int fibo(){
    return fibo<N-1>()+fibo<N-2>();
};
template <> inline int fibo<1>(){
    return 1;
};
template <> inline int fibo<0>(){
    return 1;
};

int main(){
    //inconvéniant : la récurence exige qu'on le fasse de 500 en 500, sinon, G++ n'aime pas...
    int a=fibo<4>();
    std::cout << a << "\n";
    return 0;
}
Remarque :
j'ai decide d'utiliser les templates car c'est selon moi le seul avantage du Cpp pour ce genre de code, alors si on propose plusieurs langages, autant proposer des codes differents (j'aurais pu pousser a faire des templates sur tout type de donnees, et pas seulement des int, mais bon, pour calculer pi ok, mais pour ca... je ne vois pas trop l'interet)
Langage : C
Date ajout : 05/06/2007
Posté par katsankat [Liste]
#include <stdio.h>
unsigned long fib(unsigned long n)
{
  return (n < 2) ? 1 : fib(n-2) + fib(n-1);
}
int main()
{
  int n=30;
  printf("fib(%ld)=%ld\n", n, fib(n));
  return 0;
}
Langage : Perl
Date ajout : 05/06/2007
Posté par katsankat [Liste]
use strict;
sub Fib
{
  my ($n) = @_;
  return 1 if $n < 2;
  return Fib($n - 2) + Fib($n - 1);
}
my $n = 30;
printf "Fib(%.0f)=%.0f\n",$n, Fib($n),;

Langage : PHP 3 , PHP 4 , PHP 5
Date ajout : 05/06/2007
Posté par katsankat [Liste]
<?php
function fib($n){
   if($n < 2) { return 1; }
   else { return fib($n - 2) + fib($n - 1); }
}
$n = 30;
printf("Fib(%.0f)=%.0f\n", $n, fib($n));
?>
Langage : Python
Date ajout : 05/06/2007
Posté par katsankat [Liste]
#!/usr/env/python
def Fib(n):
    if n < 2: return 1
    return Fib(n-2) + Fib(n-1)
n = 30
print "Fib(%.0f)=%.0f" % (n, Fib(n))
Langage : Java
Date ajout : 05/06/2007
Posté par katsankat [Liste]
public class fibo {
    public static void main(String args[]) {
      int N = 30; //Integer.parseInt(args[0]);
      System.out.println("fib("+ N + ")=" + fib(N));
    }
    public static int fib(int n) {
      if (n < 2) return(1);
      return ( fib(n-2) + fib(n-1) );
    }
}

Langage : C
Date ajout : 07/06/2007
Posté par NairodDorian [Liste]
#include <stdio.h>
#include <math.h>
double fib(unsigned long n)
{
    // On va s'aide du nombre d'or
    return floor(pow((1 + sqrt(5)) / 2, (double)n) / sqrt(5)); // on arrondi
}
int main(void)
{
    double r = fib(71);
    printf("%lf\n", r);
    return 0;
}
Remarque :
Il n'y a pas de risque d'exploser la pile (par récursivité à 50 la pile explose) et c'est sans doute la méthode la plus rapide et la plus précise.
Langage : C
Date ajout : 18/02/2008
Posté par Renfield [Liste]

long Fibonacci(long Rank)
{
long n1,n2;
  if (Rank==0)
    return 0;
  if (Rank<=2)
    return 1;

  Rank-=3;
  n2 = 1;

  if (Rank & 1) {
    n1 = 2; 
    Rank--;
  }

  do {
    n2 = n1 + n2;
    n1 = n1 + n2; 
  } while(Rank-=2)
  
  return n1+n2;
}

Remarque :
Pas besoin de calcul approximatif ni de récursivité, surtout..

simple et efficace



Codes sources en rapport avec : Fibonacci, Suite

{Visual Basic, VB6, VB.NET, VB 2005} TROIS ALGORITHMES POUR LA SUITE DE FIBONACCI
Bonjour à tous ! Il existe au moins trois manières de programmer le calcul des termes de la suite...

{Visual Basic, VB6, VB.NET, VB 2005} FIBONACCI ET NOMBRE D'OR
Petit programme sans prétention calculant la suite de Fibonacci ( limitée à 92 membres) et sa relati...

{C / C++ / C++.NET} SUITE DE FIBONACCI
Ce programme vous sert juste a calculer un terme n-ieme de la celebre suite de Fibonacci. Entrez la ...

{Python} FIBONACCI ITÉRATIF ET RÉCURSIF
Ce petit bout de script permet de calculer de différentes façons les termes de la suite de fibonacci...

{Javascript / DHTML} MONTRER/CACHER UN DIV
Ce code permet de montrer et de cacher un div. Ce code n'est pas de moi. J'ai juste effectuer une ad...

{C / C++ / C++.NET} LES NOMBRES DE KAPREKAR
L'algorithme de Kaprekar consiste à choisir un nombre n puis: tant que n' != n n = n' soit n...

{Javascript / DHTML} IMAGES D'IDENTIFICATION ALEATOIRE - CRYPTOVISU
Voici un petit programme nommé Crypto-Visu qui permet de lutter contre les bots. On rencontre ce gen...

{Python} SÉRIE POUR GÉNIE
Mon programme permet de calculer une série pour génie. Une série pour génie est généralement présen...

{Delphi} SUITE DE CONWAY (LOOK AND SAY SEQUENCE) - GENERATEUR
Dans la rubrique on se détend, c'est l'été... Ce code n'a qu'une prétention, c'est de vous divertir...

{C / C++ / C++.NET} CALCUL DU NOMBRE D'OR (NOMBRE DE FIBONACCI)
Ce programme réalisé avec Qt 4 permet de calculer le nombre d'or (ou nombre de fibonacci) avec la pl...