Bash - Fibonnaci

Les sempiternelles suites de Fibonnaci…, on les retrouve toujours partout en progra, comme la tour de Hanoï dans n’importe quel jeu d’énigmes d’ailleurs…

Voici donc un script bash permettant de calculer la suite de Fibonnaci. Pour rappel, une suite de Fibonnaci est une fonction récursive et se calcule de la façon suivante :

F(0) = 0
F(1) = 1
F(n) = F(n–1) + F(n–2)

Exemple :
F(2) = F(1) + F(0) = 1
F(3) = F(2) + F(1) = 1+1 = 2
F(4) = F(3) + F(2) = 1+1 + 1 = 3
F(5) = F(4) + F(3) = 1+1+1 + 1+1 = 5
F(6) = F(5) + F(4) = 1+1+1 + 1+1 + 1+1 + 1 = 8
F(7) = F(6) + F(5) = […] = 8 + 5 = 13
F(8) = F(7) + F(6) = […] = 13 + 8 = 21
F(9) = F(8) + F(7) = […] = 21 + 13 = 34
[…]

Script bash

Avec mise en forme

Le script

Le script avec une mise en forme :

#!/bin/bash

# Fonction Fibonacci

a=0
b=1
fibonnaci()
{
for ((i=0;i<valeur;i++))
do
echo -n "$a "
Z=$((a+b))
a=$b
b=$Z
done
echo -e "\n┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo -e "┃ Et F($valeur) = \e[31m$a\e[0m"
}

# Affichage de tous les termes
decompte()
{
j=$(($valeur-1))
k=$(($valeur-2))
echo -n "F($j)+F($k)"
}


# Programme principal
echo -e "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo -e "┃ SUITES DE FIBONNACI "
echo -en "┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
read -p $'\n┃ Entrer une valeur : \e[31m' valeur
echo -en "\e[0m"
echo "┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo -n "┃ Calcul de : F($valeur) = "
decompte
echo -e "\n┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo -e "┃ Les \e[31m$valeur\e[0m premiers termes de la suite de Fibonnaci sont :"
echo -en "┃ "
fibonnaci
echo "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

Le retour terminal

Affichage dans le terminal :

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃ SUITES DE FIBONNACI
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃ Entrer une valeur : 10
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃ Calcul de : F(10) = F(9)+F(8)
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃ Les 10 premiers termes de la suite de Fibonnaci sont :
┃ 0 1 1 2 3 5 8 13 21 34
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃ Et F(10) = 55
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Script utile

Le script épuré :

#!/bin/bash

# Fonction Fibonacci
a=0
b=1
fibonnaci()
{
for ((i=0;i<valeur;i++))
do
echo -n " $a"
Z=$((a+b))
a=$b
b=$Z
done
echo -e "\n F($valeur) = $a"
}

# Affichage de tous les termes
decompte()
{
j=$(($valeur-1))
k=$(($valeur-2))
echo "F($j)+F($k)"
}


# Programme principal
read -p $' Entrer une valeur : ' valeur
echo -n " Calcul de : F($valeur) = "
decompte
echo " Les $valeur premiers termes de la suite de Fibonnaci sont :"
fibonnaci
> Partager <