Bash - Factorielle

Un script bash permettant de calculer la factorielle d’un nombre. Pour rappel, une factorielle est une fonction récursive et se calcule de la façon suivante :

n! = n * (n-1) * (n-2) * ... * 1

Exemple : 5! = 5 * 4 * 3 * 2 * 1 = 120

Script bash

Avec mise en forme

Le script

Le script avec une mise en forme :

#!/bin/bash

# Fonction factorielle
F=1
factorielle()
{
for ((i=1;i<=valeur;i++))
do
F=$((F*$i))
done
echo -e "\e[31m $F \e[0m"
}

# Affichage de tous les termes
decompte()
{
for ((i=1;i<=valeur;i++))
do
if ((i!=valeur)); then
echo -n "$i*"
else
echo -n "$i"
fi
done
}

# Programme principal
echo -e "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo -e "┃ FACTORIELLE "
echo -e "┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
read -p $'┃ Entrer une valeur : \e[31m ' valeur
echo -en "\e[0m"
echo "┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo -n "┃ Calcul de : "
decompte
echo -e "\n┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo -en "┃ La factorielle de \e[31m$valeur\e[0m est :"
factorielle $valeur
echo "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

Le retour terminal

Affichage dans le terminal :

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃ FACTORIELLE
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃ Entrer une valeur : 10
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃ Calcul de : 1*2*3*4*5*6*7*8*9*10
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃ La factorielle de 10 est : 3628800
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Script utile

Le script épuré :

#!/bin/bash

# Fonction factorielle
F=1
factorielle()
{
for ((i=1;i<=valeur;i++))
do
F=$((F*$i))
done
echo $F
}

# Affichage de tous les termes
decompte()
{
echo -n "Calcul de : "
for ((i=1;i<=valeur;i++))
do
if ((i!=valeur)); then
echo -n "$i*"
else
echo "$i"
fi
done
}

# Programme principal
read -p $'Entrer une valeur : ' valeur
decompte
echo -n "La factorielle de $valeur est : "
factorielle $valeur
> Partager <