Problema ricorsione

di il
8 risposte

Problema ricorsione

Ancora non riesco ad entrare nel concetto della ricorsione, in pratica l'esercizio chiede, un programma che esprima l'M.C.D. tra due numeri, in maniera ricorsiva...

#include <stdio.h>

int gcd (int, int);

main()
{
      int number1, number2, risultato;
      
      printf("Inserisci i due numeri in modo da valutare l'M.C.D: ");
      scanf("%d%d", &number1, &number2);
      
      risultato = gcd (number1, number2);
      
      printf("\n%d", risultato);
      
      return 0;
      }
      
int gcd (int x, int y){
     
     if(y == 0){
          
       gcd(x, y);
       
       return x;
       }
       
     else
     
         return gcd(y, x % y);
         
         
         }
l'algoritmo mi è chiaro ma...perchè si blocca?

8 Risposte

  • Re: Problema ricorsione

    jackalxp5b ha scritto:


    gcd(x, y);
    Perchè? In questo modo è ovvio che si blocchi il programma.

    Prova questo:
    #include <stdio.h>
    #if WIN32
    # include <conio.h>
    #endif
    
    int gcd (int, int);
    
    int main() {
          int number1, number2, risultato;
          printf("Inserisci i due numeri in modo da valutare l'M.C.D: \n");
          scanf("%d%d", &number1, &number2);
          fflush(stdin);
          risultato = gcd (number1, number2);
          printf("\n%d", risultato);
          #if WIN32
          getch();
          #else
          getchar();
          #endif
          fflush(stdin);
          /* Ho usato getch(); o getchar(); per interrompere il programma, per alcuni compilatori non
          è necessario. fflush(stdin); l'ho usato per svuotare il buffer. */
          return 0;
    }
          
    int gcd(x, y) {
         if (y == 0) { 
           return x;
         }
         else return gcd(y, x % y);
    }
    
  • Re: Problema ricorsione

    Fatto:
    
    #include <stdio.h>
    #include <conio.h>
    
    int gcd (int, int);
    
    main()
    {
          int number1, number2, risultato;
          
          printf("Inserisci i due numeri in modo da valutare l'M.C.D: ");
          scanf("%d%d", &number1, &number2);
          
          risultato = gcd (number1, number2);
          
          printf("\n%d", risultato);
          
          getch();
          }
          
    int gcd (int x, int y){
         
         if(y == 0){
           
           return x;
           }
           
         else
         
             return gcd(y, x % y);
             
             
             }
    
    ma...continua a bloccarsi...
  • Re: Problema ricorsione

    Scusatemi, tutto ok...stavo usando dev-c++, e non so perchè talvolta quando compilo, mi da degli errori...ho avviato l'eseguibile da dos, ed ora funziona...anche perchè l'ho provato su emacs, e va alla grande..butterò via win!!!
  • Re: Problema ricorsione

    Fai prima a buttare via Dev-C++
  • Re: Problema ricorsione

    Un compilatore su windows decente??
  • Re: Problema ricorsione

    Visual Studio Express 2010 (gratuito), Code::Blocks, Nokia QT. Ne vuoi altri?
  • Re: Problema ricorsione

    Thank's sky...per ora mi bastano...
  • Re: Problema ricorsione

    Ma il codice funzionava a me, ho sempre Dev-C++, non mi ha mai dato errori. Comunque lo cambierò se comincia a non funzionare bene.
Devi accedere o registrarti per scrivere nel forum
8 risposte