Partage
  • Partager sur Facebook
  • Partager sur Twitter

[RECURSIVE] mauvaise logique

Sujet résolu
    20 novembre 2007 à 21:46:17

    Bonjour à tous,


    j'aimerai faire une fonction recursive en c mais j'ai du mal a m'imaginer comment faire. Donc j'ai une mauvaise logique. Quelqu'un aurait il un bon exemple?

    merci
    bien à vous
    • Partager sur Facebook
    • Partager sur Twitter
      20 novembre 2007 à 22:43:04

      Citation : lnsomnia


      j'aimerai faire une fonction recursive en c mais j'ai du mal a m'imaginer comment faire. Donc j'ai une mauvaise logique. Quelqu'un aurait il un bon exemple?



      Oui, ce n'est pas si immédiat d'en comprendre le principe bien que ça semble naturel. Il existe de nombreux exemples. En voici un qui permet de calculer a exposant n (encore noté <math>\(a%5En\)</math>) c'est-à-dire a multiplié par lui-même n-1 fois :

      1. #include <stdio.h>
      2. int f(int a, int n)
      3. {
      4.   if (n == 0)
      5.     return 1;
      6.   else
      7.     return a * f(a, n - 1); /* <-- appel récursif ICI */
      8. }
      9. int main(void)
      10. {
      11.   printf("%d\n", f(2, 10));
      12.   return 0;
      13. }

      Compilation et exécution :


      candide@candide-desktop:~$ gcc -W -Wall -o x sdz.c 
      candide@candide-desktop:~$ ./x
      1024



      Ici, une simple boucle serait certainement plus rapide à l'exécution qu'une récursion.

      EDIT
      Modification définition de <math>\(a%5En\)</math>
      • Partager sur Facebook
      • Partager sur Twitter
        20 novembre 2007 à 23:22:26

        Sinon, bluestorm à écrit un très bon tuto sur la récursivité. Ce n'est toutefois pas en C, mais il précise, et c'est vrai, qu'il explique la logique, qui elle, est applicable dans tous les langages permettant les récursivité.

        Bonne continuation.
        • Partager sur Facebook
        • Partager sur Twitter
          23 novembre 2007 à 20:25:24

          Merci de vos réponses. Je vois mieux comment cela fonctionne et j'ai su en faire une.
          • Partager sur Facebook
          • Partager sur Twitter

          [RECURSIVE] mauvaise logique

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown