Funzioni Ricorsive

di il
7 risposte

Funzioni Ricorsive

Ho bisogno di aiuto di nuovo...il prof ci ha chiesto di fare un programma che con una funziona ricorsiva calcoli l'MCD tra due numeri a e b...
ma non riesco a capire come si faccia ci ha fatto l'esempio del fattoriale e mi sembrava di averlo capito...ma a fare quello dell'MCD non ci riesco proprio...ho abbozzato questo ma non parte nemmeno
Ci ha dato come suggerimento di usare il metodo di euclide per il calcolo dell'MCD...
#include <iostream>
using namespace std;


int MCD(int a, int b, int r) {
    cout << "Inserisci due numeri: " <<endl;
    cin >> a >> b;
    r = a % b;

    if(b == 0)
    {
        return a;
    }
    else
    {
     return MCD(a, r);
 }
}

7 Risposte

  • Re: Funzioni Ricorsive

    Ma google nessuno lo usa tra voi promettenti programmatori?
    http://it.wikipedia.org/wiki/Algoritmo_di_Euclide#Codice_C.2FC.2B.2B
  • Re: Funzioni Ricorsive

    No, no! Lo uso eccome...ma non parte nemmeno scritto così...solo che non so cosa ci manchi, Qt Creator dice
    "Collect2: Id returned 1 exit status"

    Al che avevo provato a farlo come l'ho messo nel primo post ma il risultato è sempre quello...non parte...
  • Re: Funzioni Ricorsive

    Copiato da wikipedia
    
    int mcd(int a, int b) 
    {
      if (b == 0)
        return a;
      else
        return mcd(b, a % b);
    }
    
    
  • Re: Funzioni Ricorsive

    E' esattamente quello che ho copiato anche io ma non mi va! =( E' con questo che mi dice l'errore che ho scritto nel post prima...ho provato a modificare questo mettendoci dentro anche r cioè il resto ma non cambia nulla...non mi va...

    A questo punto, cosa ci va scritto nel codice oltre a questo?! Io ci ho messo la libreria iostream e using namespace std...serve altro?!
  • Re: Funzioni Ricorsive

    
    #inlude <iostream>
    
    int main(void)
    {
       int a = 0;
       int b = 0;
       cout << "inserisci il primo numero" << endl;
       cin >> a;
        cout << "inserisci il secondo numero" << endl;
       cin >> b;
      cout << "MCD = " << mcd(a,b) << endl;
     return 0;
    }
    
    
    int mcd(int a, int b)
    {
      if (b == 0)
        return a;
      else
        return mcd(b, a % b);
    }
    
    
  • Re: Funzioni Ricorsive

    Aaaaahn, ma non avevo capito proprio un accidente! Praticamente quella là era la funzione ma mancava il corpo del main che la "facesse andare" O_o
    Grazie mille veramente!
    Ma, scusa se continuo a rompere...a cosa serve void tra le parentesi del main?!Perchè ho provato a toglierlo e il programma va lo stesso...
    Ti dovrò fare una statua poi quando imparerò ad usare il C++ =P
  • Re: Funzioni Ricorsive

    Void serve a niente. E' per dire che main accetta un bel niente. Ovviamente ci sono anche main che accettano argomenti. La funzione main + usata è:

    int main(int argc, char *argv)

    ma di questo se ne parla un altra volta.
Devi accedere o registrarti per scrivere nel forum
7 risposte