Prog bash récursif factorielle

Fermé
jakol - 3 avril 2008 à 22:10
 abass - 10 mai 2011 à 15:55
prog bash récursif factorielle

Bonjour,
je souhaiterais avoir des suggestions de code pour un programme récursif comptant la factoriel d'une valeur donnée.

J'ai fait le prog en itératif, mais en récursif...

voici ci-joint mon prog en itératif:

#!/bin/bash

declare -i r=1

for ((i=1;i<=$1;i++))
do

((r=r*i))

done

echo "factorielle = " $r
~
Merci d'avance pour vos réponses

5 réponses

Je sais pas le syntaxe de langage qui vous utilisé mais ve vais vous donnez une solution algorithmique itérative puis récursive :

/* solution itérative :*/

fonction factoriel (n : entier):entier
var:
f:entier
debut
pour i de 1 a n faire
f=f*i
fin pour
retourner(f)
fin

/* solution récursive */

fonction factoriel(n: entier): entier
var:

debut

si n=0 alors factoriel =1
sinon factoriel= n * factoriel(n-1)
finsi

fin
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
4 avril 2008 à 11:25
Salut,

C'est la méthode qui t'importe ou le résultat ?
0
la méthode récursive
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
4 avril 2008 à 13:51
#!/bin/bash

declare -i r=1

for ((i = 1;i <= $1; i++))
do
echo $r
r=$((r * i))

done
;-))
0
salut et merci pour ta réponse,

en fait, pour toir le prog devient récursif si on met "r=$((r * i)" dans la boucle ?

A+
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
7 avril 2008 à 10:03
Voir des réponses beaucoup plus pointues et beaucoup plus compétentes que la mienne, là ;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
7 avril 2008 à 10:07
0
salut

merci bcp pour vos réponses

A+
0
voici un bon script
declare -i r=1

echo "donner un entier"

read entier
for ((i = 1;i <= $entier; i++))
do
r=$((r * i))

done
echo $r
0