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