Metodo ricorsivo che restituisce un array
scusate, devo consegnare entro 2 giorni questo esercizio ma non riesco a proseguire...
Scrivere un metodo ricorsivo Java int[] trasforma1(int n) che dato un intero positivo n calcola e restituisce un array costituito dalle cifre di n dalla meno significativa alla più significativa
mettiamo per esempio che il numero n è 152
il metodo deve restituirmi un array di interi formato da tre elementi in questo ordine [1 , 2 , 5]
ma qual è il comando che mi permette di prendere la cifra singola del numero??
ovviamente mi aiuto con un intero che mi fa da indice.. e quindi nell'array che creo il primo elemento sarà dato dalla cifra in posizione 0 del numero, il secondo elemento è la cifra in posizione 1 del numero e così via.. ma non riesco a trovare il modo.. c'è un comando preciso per estrapolare singolarmente le cifre del numero??
scusate la domanda stupida ma mi sono bloccato..
grazie mille!
Leonardo
Scrivere un metodo ricorsivo Java int[] trasforma1(int n) che dato un intero positivo n calcola e restituisce un array costituito dalle cifre di n dalla meno significativa alla più significativa
mettiamo per esempio che il numero n è 152
il metodo deve restituirmi un array di interi formato da tre elementi in questo ordine [1 , 2 , 5]
ma qual è il comando che mi permette di prendere la cifra singola del numero??
ovviamente mi aiuto con un intero che mi fa da indice.. e quindi nell'array che creo il primo elemento sarà dato dalla cifra in posizione 0 del numero, il secondo elemento è la cifra in posizione 1 del numero e così via.. ma non riesco a trovare il modo.. c'è un comando preciso per estrapolare singolarmente le cifre del numero??
scusate la domanda stupida ma mi sono bloccato..
grazie mille!
Leonardo
Risposte
Ciao,
domanda, che il tuo esempio è firorviante, se devi resistuire un array di cifre, rappresentante di un numero, dalla posizione meno significativa alla più significativa, allora:
es. 152: sarà [2,5,1]
domanda, che il tuo esempio è firorviante, se devi resistuire un array di cifre, rappresentante di un numero, dalla posizione meno significativa alla più significativa, allora:
es. 152: sarà [2,5,1]
"ham_burst":
Ciao,
domanda, che il tuo esempio è firorviante, se devi resistuire un array di cifre, rappresentante di un numero, dalla posizione meno significativa alla più significativa, allora:
es. 152: sarà [2,5,1]
l'esercizio dice dalla meno significativa alla piu significativa riferendosi alla cifra.. non alla posizione.. per questo ho pensato volesse dire che il metodo deve restituire un array ordinato in modo crescente. sbaglio?
Sì, sbagli. Quando si parla di cifra meno significativa si intende la cifra con la minor importanza (e quindi quella delle unità). La cifra più significativa è invece quella che ha maggior importanza nel numero. Quindi se hai 152 l'array deve essere [2, 5, 1].
Per ottenere le cifre è sufficiente continuare a dividere per 10 e fare il modulo per 10. L'i-esima cifra $C_i$ del numero $N$ che devi scrivere può quindi essere calcolata nel seguente modo ricorsivo:
$B_0 = N$,
$B_i = B_{i-1} / 10$,
$C_i = B_i \mod 10$.
Ti fermi quando $B_i$ diventa uguale a $0$. Nota che la vera funzione ricorsiva dovrà essere un'altra, perché hai bisogno di continuare a passare anche l'indice corrente nell'array. Se invece di un array facessi uso di una struttura dati diversa (una lista per esempio) non sarebbe invece necessario passare gli indici.
Per ottenere le cifre è sufficiente continuare a dividere per 10 e fare il modulo per 10. L'i-esima cifra $C_i$ del numero $N$ che devi scrivere può quindi essere calcolata nel seguente modo ricorsivo:
$B_0 = N$,
$B_i = B_{i-1} / 10$,
$C_i = B_i \mod 10$.
Ti fermi quando $B_i$ diventa uguale a $0$. Nota che la vera funzione ricorsiva dovrà essere un'altra, perché hai bisogno di continuare a passare anche l'indice corrente nell'array. Se invece di un array facessi uso di una struttura dati diversa (una lista per esempio) non sarebbe invece necessario passare gli indici.