Quote Originariamente inviata da andbin Visualizza il messaggio
Devi ragionare più in senso ricorsivo e un esempio potrebbe chiarirti:

Invochi direttamente il metodo passando es. 6789. Dato che è maggiore di 0, restituirai 1 + quello che ti fornisce la invocazione ricorsiva. La prima invocazione ricorsiva la fai passando 678 (il valore diviso 10). In questa invocazione il valore è maggiore di 0, quindi restituirai 1 + quello che ti fornisce la invocazione ricorsiva. Ecc....
ma quel ragionamento è esattamente quello che ho fatto io (credo..).
sono riuscito a farlo con il metodo ricorsivo ma il metodo è void e non c'è alcun return, cosa che non è del tutto lecita perchè nella consegna viene specificato di restituire il valore.
Quello che ho scritto:
codice:
class NumeroDiCifre
{
    public static void QuanteCifre(int n,int i)
    {    if(n/10 != 0)
        {    n=n/10;
            i++;
            QuanteCifre(n,i);
        }else
            System.out.println("Ha "+i+" cifra/e");
    }

    public static void main(String[] args)
    {    int numero;
        System.out.print("Numero: ");
        numero = SavitchIn.readLineInt();        
        if(numero<0)    //valore assoluto del numero
            numero=numero*(-1);
        QuanteCifre(numero,1);
    }
}
non riesco a capire come fare senza passare il valore "conta"