|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2009
Messaggi: 18
|
Ricorsione in java
Personalmente mi vergogno a scrivere qua per un problema tipo questo, ma è da tempo che non prendo in mano java, e non riesco neanche più a risolvere un problemino simile: dato un numero r contare quante volte si presenta nel numero num tramite ricorsione.
la funzione ricorsiva che ho fatto è: static int conteggio (int r, int num) { if (num%10 == r && num > 0) return 1 + conteggio (r, num/10); else return conteggio (r, num/10); } che ovviamente va in stackoverflow, sapete darmi una mano?? thanks!! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Domanda-Soluzione: Quando termina la ricorsione?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
detto in termini spiccioli, manca la condizione di uscita
__________________
My gaming placement |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Oct 2009
Messaggi: 18
|
Immaginavo, ma non basta la condizione nel num>0 dato che comunque viene decrementato costantemente fino a 0? (ovvio che non basta, altrimenti nn andrebbe in overflow, però non capisco perché non sia sufficiente come condizione!!)
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
perchè in tal caso esegue il secondo ramo dell'if
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Oct 2009
Messaggi: 18
|
Ok, in versione molto scolastica risulta:
public static int conteggio (int r, int num) * * * * * * * * * * * * { * * * * * * * * * * * * * * * * if (num>0) * * * * * * * * * * * * * * * * * * * * {* * * * * * * * * * * * * * * * * * * * * * * * * if (num%10 == r) return 1 + conteggio (r, num/10); * * * * * * * * * * * * * * * * * * * * * * * * else return conteggio (r, num/10); * * * * * * * * * * * * * * * * * * * * } * * * * * * * * * * * * * * * * else return 0; * * * * * * * * * * * * } In versione un po' ridotta? |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Puoi verificare subito la condizione di uscita, ad esempio:
Codice:
public static int conteggio(int r, int num) {
if (num == 0) return 0;
else if (num%10 == r) return 1 + conteggio(r, num/10);
else return conteggio (r, num/10);
}
Codice:
public static int conteggio(int r, int num) {
return conteggio_2(r, num, 0);
}
private static int conteggio_2(int r, int num, int acc) {
if (num == 0) return acc;
else return conteggio_2(r, num/10, (num%10 == r) ? acc+1 : acc);
}
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 05-07-2012 alle 09:51. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:47.




















