Prog bash récursif factorielle

jakol -  
 abass -
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
Configuration: Linux Debian
Mozilla 1.8.1.8

5 réponses

  1. Anis
     
    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
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    C'est la méthode qui t'importe ou le résultat ?
    0
    1. jakol
       
      la méthode récursive
      0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    #!/bin/bash
    
    declare -i r=1
    
    for ((i = 1;i <= $1; i++))
    do
    echo $r
    r=$((r * i))
    
    done
    ;-))
    0
    1. jakol
       
      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
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Voir des réponses beaucoup plus pointues et beaucoup plus compétentes que la mienne, là ;-))
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    0
    1. jakol
       
      salut

      merci bcp pour vos réponses

      A+
      0
    2. abass
       
      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