Fibonacci

Afficher la suite de Fibonacci en bash, php, python3

En bash:

#!/bin/bash

#set -x

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

function is_int {
        if grep -E -v -q "^-?[0-9]+$" <<< $1; then
                return 1
        fi
        return 0
}

if [ -z $1 ] || ! is_int $1 || (($1 <= 0)); then
        printf "\
Usage: %s nbr_int
    nbr_int: Un nombre entier supérieur à 0\n" $0
        exit 1
fi

a=0
b=1

while (($b < $1)); do
        printf "%d\n" $b
        ((b=a+b))
        ((a=b-a))
done

printf "b/a = %1.15f\n" $(echo $b/$a | bc -l)

exit 0

En php:

#!/usr/bin/env php

<?php

if(! isset($argv[1]) || ! is_numeric($argv[1]) || intval($argv[1]) <= 0){
        printf("Usage: %s nbr_int
    nbr_int: Un nombre entier supérieur à 0\n", $argv[0]);
        exit(1);
}

$nbr_int = intval($argv[1]);

$a = 0;
$b = 1;

while ($b < $nbr_int) {
        printf("%d\n", $b);
        $b = $a + $b;
        $a = $b - $a;
}

printf("b/a = %1.15f\n", $b/$a);

exit(0);

En python3:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys, argparse

parser = argparse.ArgumentParser(description=u"Calcul et affiche les n premiers nombres de la suite de Fibonacci.")
parser.add_argument("number", help=u"Nombre maximum de calcul de la séquence. Ce nombre doit égal ou supérieur à 2.", type=int)
parser.add_argument("-g", "--display-golden-number", dest="golden", help=u"Afficher le nombre d'or.", action="store_true")
parser.add_argument("--log", default=sys.stdout, type=argparse.FileType('w'), help=u"Fichier où sera enregistré le résultat.")
args = parser.parse_args()

if args.number < 2:
    print(u"Indiquer un nombre supérieur ou égal à 2.")
    sys.exit(1)

a,b = 0,1

while b < args.number:
    print("{:d}".format(b), file=args.log)
    a,b = b,a+b

if args.golden:
    print(u"\nb/a = {:1.15f} (Nombre d'or)".format(b/a), file=args.log)

args.log.close()
sys.exit(0)

infoTous ces scripts prennent en paramètre un nombre entier positif.
En prime, le quotient des deux derniers termes est affiché et représente le nombre d'or si le nombre passé en argument est supérieur ou égal à 1 000 000 (pour la précision du nombre d'or).
Le script Python est un peu plus développé avec une gestion des arguments plus pointue.

Ajouter un commentaire

Filtered HTML

  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
CAPTCHA
Cette question permet de s'assurer que vous êtes un utilisateur humain et non un logiciel automatisé de pollupostage.
CAPTCHA visuel
Entrez les caractères (sans espace) affichés dans l'image.