Problemi con Esercizio di Ricorsione Conta Numeri Dispari

di il
1 risposte

Problemi con Esercizio di Ricorsione Conta Numeri Dispari

Salve a tutti, scusate sono nuovo, cerco aiuto da parte vostra in quanto mi son bloccato da giorni con un esercizio e non riesco a venirne fuori, il quesito è questo:
"Scrivere un método ricorsivo che conti il numero di cifre dispari in un numero."
ho abbozzato questo:

public class Cap_7_Eser_3 {
public static void main(String[] args){
int numero = 135;
System.out.println(Dispari.dispari(numero));
}
}
class Dispari{

public static int dispari(int numero){
int risultato = 0;
if(numero < 10){
if(numero % 2 != 0){
risultato++;
}
}
else {
risultato = dispari(numero/10);
}
return risultato;
}
}
adesso sono bloccato sulla ricorsione in risalita del metodo, mi spiego meglio

la divisione dei tre numeri per verificare cifra x cifra viene fatta, sicuramente l'errore sta nel confronto delle cifre in risalita dallo stack delle chiamate ovvero numero %10, sono bloccato qui, potreste darmi qualche consiglio, vi ringrazio in anticipo.

1 Risposte

  • Re: Problemi con Esercizio di Ricorsione Conta Numeri Dispari

    jeeg12 ha scritto:


    "Scrivere un método ricorsivo che conti il numero di cifre dispari in un numero."
    ho abbozzato questo:

    adesso sono bloccato sulla ricorsione in risalita del metodo
    A ciascun livello di invocazione, il valore da restituire è il risultato del test su una cifra (quindi 0=pari o 1=dispari) più il valore restituito dalla invocazione ricorsiva (se da fare). Nel tuo codice questa logica non c'è.

    Pensa alla "catena" delle invocazioni con per es. il numero 17403
    dispari(17403)    questo deve restituire [1] + 2
       dispari(1740)    questo deve restituire [0] + 2
          dispari(174)    questo deve restituire [0] + 2
             dispari(17)    questo deve restituire [1] + 1
                dispari(1)    questo deve restituire [1]
    Ho indicato con [0] e [1] il "contributo" dato dalla cifra sotto esame (quella meno significativa es. 174 --> [0] o 17 --> [1] ). Ma il valore complessivo da restituire ad un certo livello è quel contributo + il valore ottenuto dalla invocazione ricorsiva. Questo, ripeto, nel tuo codice non c'è.
Devi accedere o registrarti per scrivere nel forum
1 risposte