Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Metodo Ricorsivo

  1. #1
    Utente di HTML.it L'avatar di mist3r0
    Registrato dal
    Mar 2007
    Messaggi
    103

    Metodo Ricorsivo

    Ciao ragazzie, ho un piccolo problema di comprensione della traccia di un metodo ricorsivo!

    La traccia è questa:

    Scrivere un metodo ricorsivo SOMMA (INT N) che riceve un intero positivo n e provvede a ritornare la somma delle cifre di n.
    Se n è negativo, il metodo deve sollevare un IllegalArgumentException.
    Non è lecito converitire il numero n a stringhe o usare strutture dati d'appoggio.

    Che cavolo vuol dire che provvede a ritornare la somma delle cifre di n???

    Se n è un INT non può essere spezzettato, quindi non si possono prendere i singoli numeri!

    :master:

    esempio, se n= 115, da quanto ho capito dovrei ritornare 1+1+5=7!
    Ma in java non si può fare!!
    :berto:

    HELP ME!!!
    M|$T3R®

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Metodo Ricorsivo

    Originariamente inviato da mist3r0
    esempio, se n= 115, da quanto ho capito dovrei ritornare 1+1+5=7!
    Esatto, proprio questo!

    Originariamente inviato da mist3r0
    Ma in java non si può fare!!
    Certo che si può fare ... in qualunque linguaggio! Basta che usi gli operatori di divisione/resto che sono / e %.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di mist3r0
    Registrato dal
    Mar 2007
    Messaggi
    103
    Per favore potresti farmi un esempio x capire meglio??

    Grazie...
    M|$T3R®

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    157
    Molto semplicemente:

    codice:
    public int SommaCifre(int n)
    {
      if(n < 0)
        throw new IllegalArgumentException("n must be positive");
      else if(n < 9) // per la condizione di sopra, 0 <= n < 9
        return n;
      else //più di una cifra
        return n % 10 + //ultima cifra
                   sommaCifre(n / 10); //somma delle restanti
    }
    anche se a mio avviso è molto meglio un metodo iterativo...

  5. #5
    Utente di HTML.it L'avatar di mist3r0
    Registrato dal
    Mar 2007
    Messaggi
    103
    GRazieeeeeeeee!
    M|$T3R®

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    157
    Ma figurati!! E se vuoi anche il metodo iterativo (già k ci siamo diamo il pacchetto completo )

    codice:
    public int SommaCifre(int n)
    {
      if(n < 0)
        throw new IllegalArgumentException("n must be positive");
      
      int sommaCifre = 0;
      while(n > 0)
      {
        sommaCifre += n;
        n = n / 10;
      }
      return sommaCifre;
    }

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da mist3r0
    GRazieeeeeeeee!
    Sì, ringrazialo pure ... l'eventuale voto sull'esercizio infatti dovrebbe andare a alde90.

    Tra l'altro:
    codice:
      else if(n < 9) // per la condizione di sopra, 0 <= n < 9
        return n;
    n <= 9 oppure n < 10 altrimenti non tiene in considerazione il 9 per il ritorno "veloce" di 1 sola cifra.

    Inoltre:
    Originariamente inviato da alde90
    codice:
    public int SommaCifre(int n)
    {
      if(n < 0)
        throw new IllegalArgumentException("n must be positive");
      
      int sommaCifre = 0;
      while(n > 0)
      {
        sommaCifre += n;
        n = n / 10;
      }
      return sommaCifre;
    }
    che è pure sbagliato perché non calcola il resto per ottenere il singolo digit.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it L'avatar di mist3r0
    Registrato dal
    Mar 2007
    Messaggi
    103


    Carissimo andbin, Non importa che in quello che ha scritto c'è o no l'errore, infatti ti dico ank io dove è l'errore!

    |
    | Vedi Codice sotto...
    |
    v
    Codice PHP:
         .
         . 
         .
      else 
    //più di una cifra
        
    return 10 //ultima cifra
                   
    sommaCifre(10); 
    L'importante era solo avermi fatto capire come si faceva, un errore ci può pure stare non muore nessuno!

    GRAZIE ANCORA alde90!

    PS: NON MI STANNO MOLTO SIMPATICI QUELLI CHE FANNO TANTO I SAPIENTONI!
    M|$T3R®

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.