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 : 21102
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
- Scripts fu



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 : 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
Langage : Scripts fu
Date ajout : 25/10/2008
Posté par coucou747 [Liste]
(define (fibonaci v0 v1) (cons-stream v0 (fibonaci v1 (+ v0 v1))))
Remarque :
; (display-stream (fibonaci 0 1))

attention, c'est une structure lazy, recursive, et assez lente si on active pas le mode dynamique des streams.

l'avantage, c'est qu'une fois qu'il a calcule une fois, il a calcule pour toujours



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 ...

{C / C++ / C++.NET} NOMBRES DE FIBONACCI (TRÈS GRANDS ENTIERS)
Ce code a été effacé par son auteur, Sverdlovsky, le 1er juin 2009. Ce code a été effacé par son aut...

{Python} SUITE DE SYRACUSE
Ce programme représente la "Suite de Syracuse" créée par Lothar Collatz et qui fonctionne comme ceci...

{PHP} SUITE LOGIQUE
Une suite logique que j'ai découvert dans un des livres de Bernard Werber : 1 11 21 1211 1112...

{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...