Si consideri la seguente funzione:
int f(int a, int b) { if(a == b) return a; else if(a > b) return f(a-b, b); else return f(a, b-a); }Cosa restituisce la funzione se viene chiamata passandole due numeri a e b maggiori di zero?
- 1 se a, b sono entrambi dispari, 2 altrimenti
- 1 se a, b sono entrambi numeri primi, 2 altrimenti
- il massimo comun divisore di a e b
- il minimo comune multiplo di a e b.
Soluzione: c (il massimo comun divisore di a e b)
Osserva
- f(3, 3)=3, quindi le prime due risposte non sono corrette
- f(3, 4)=f(3, 1)=f(2, 1)=f(1, 1)=1, quindi l’ultima risposta non è corretta.
Utilizza il metodo di Euclide ma effettua le divisioni come sottrazioni successive…