Si consideri la funzione
int ES6(int x, int y) { if(x == 0 && y == 0) return 0; else if(x%10 < y%10) return ES6(x, y/10); else if(x%10 > y%10) return ES6(x/10, y); else return x%10+10*ES6(x/10, y/10); }
Dire cosa restituisce la chiamata ES6(3467, 5678)
Risposte:
- 18
- 67
- 2367
- nessuna delle precedenti
Soluzione: b (67)
Segui la catena di chiamate…
- ES6(3467, 5678)
- (0,0)? No
- (7 < 8)? Sì, ES6(3467, 567) = 67
- ES6(3467, 567)
- (0,0)? No
- (7 < 7)? No
- (7 > 7)? No
- 7+10*ES6(346, 56) = 7+10*6 = 67
- ES6(346, 56)
- (0,0)? No
- (6 < 6)? No
- (6 > 6)? No
- 6+10*ES6(34,5) = 6+10*0 = 6
- ES6(34, 5)
- (0,0)? No
- (4 < 5)? Sì, ES6(34, 0) = 0
- ES6(34, 0)
- (0, 0)? No
- (4 < 0)? No
- (4 > 0)? Sì, ES6(3, 0) = 0
- ES6(3, 0)
- (0,0)? No
- (3 < 0)? No
- (3 > 0)? Sì, ES6(0, 0) = 0
- ES6(0, 0)
- (0, 0)? Sì, 0
Restituisce il numero costruito con le cifre che sono presenti in sequenza in x e nella stessa sequenza, anche se separate, in y…