IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

prog bash récursif factorielle


Sujet :

Linux

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 85
    Points : 100
    Points
    100
    Par défaut prog bash récursif factorielle
    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

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jakol Voir le message
    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.
    Pas compliqué. Faut juste se souvenir qu'une fonction en shell n'a qu'un moyen de renvoyer une valeur => elle l'affiche
    Et l'appelant récupère cet afichage via les backquotes

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/sh
     
    add()
    {
        res=`expr $1 + $2`
        echo $res
    }
     
    result=`add 5 6`
    echo "Le résultat de 5 + 6 est $result"
    Donc si tu piges bien ce principe, le reste est trivial.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Une fonction qui reçoit un nombre en paramètre
    Si ce nombre est 0 ou 1 
          elle affiche 1
    sinon
          elle calcule une valeur égale au nombre - 1
          elle s'appelle elle-même en lui passant cette valeur en paramètre => cela lui renvoie la factorielle de cette valeur
          elle multiplie le résultat récupéré ci-dessus par son nombre qu'elle-même avait reçu en paramètre
          elle affiche le résultat
    fin si
    fin fonction
    Et pour t'en servir, ben tu l'appelles en lui passant en paramètre le nombre à calculer
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. start while: prog in while bash
    Par Luke spywoker dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 17/02/2011, 00h26
  2. Factoriel récursif
    Par hpalpha dans le forum Contribuez
    Réponses: 0
    Dernier message: 13/02/2011, 17h24
  3. Factoriel en récursif terminal
    Par thierryler dans le forum Débuter
    Réponses: 5
    Dernier message: 15/12/2008, 12h01
  4. Problème: factoriel récursif
    Par loader dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 18/09/2008, 10h25
  5. Prog pour calculer la factorielle d'un nombre
    Par Lenezir dans le forum Langage
    Réponses: 2
    Dernier message: 11/05/2007, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo