Gå til innhold

trenger mer hjelp med rekursjon


Anbefalte innlegg

Skrevet

hvis jeg skal bruke rekursjon og skal ha en metode tverrsum som skal summere alle sifrene i tallet

eks. public static void tverrsum(12345){

 

}

 

denne metoden skal da summere 1+2+3+4+5

 

kan noen hjelpe?

Videoannonse
Annonse
Gjest Slettet+1374861
Skrevet

hvilken datatype tar du inn?

og du skal absolutt gjøre dette med rekusjon? er like greit med en løkke...

Skrevet
hvilken datatype tar du inn?

og du skal absolutt gjøre dette med rekusjon? er like greit med en løkke...

 

dette må gjøres med rekusjon ja...er en oppgave...jeg får inn et heltall

eks public static void tverrsum(int tallet)

Gjest Slettet+1374861
Skrevet (endret)

Her er en måte å gjøre det på. Fins sikkert bedre måter å håndtere lengden på en int, men dette var det jeg mekka kjapt. Tar selv gjerne input på bedre måter å håndtere nettopp det problemet.

 

public static int tverrsum(int heltall)
{
int sum = 0;

String strengTall = ""+heltall;
int forsteSiffer = Integer.parseInt(strengTall.substring(0, 1));
int restenAvSiffer = Integer.parseInt(strengTall.substring(1));

sum = forsteSiffer;

if(restenAvSiffer >= 10)
	sum += tverrsum(restenAvSiffer);
else
	sum += restenAvSiffer;

return sum;
}

public static void main(String[] args)
{
System.out.println(tverrsum(123));
}

Endret av Slettet+1374861
Skrevet
Her er en måte å gjøre det på. Fins sikkert bedre måter å håndtere lengden på en int, men dette var det jeg mekka kjapt. Tar selv gjerne input på bedre måter å håndtere nettopp det problemet.

 

public static int tverrsum(int heltall)
{
int sum = 0;

String strengTall = ""+heltall;
int forsteSiffer = Integer.parseInt(strengTall.substring(0, 1));
int restenAvSiffer = Integer.parseInt(strengTall.substring(1));

sum = forsteSiffer;

if(restenAvSiffer >= 10)
	sum += tverrsum(restenAvSiffer);
else
	sum += restenAvSiffer;

return sum;
}

public static void main(String[] args)
{
System.out.println(tverrsum(123));
}

 

Jeg fikk mye hjelp av koden din, men fant det ut på en enklere måte,,,mindre kode:

 

public class Oppgave2{

private static int sum = 0;

public static void main(String[] args){

	System.out.println(tverrsum(125834));
}

public static int tverrsum(int tallet){

	if(tallet < 10){
		sum += tallet;
	}
	else{
		sum += tallet%10;
		tverrsum(tallet/10);
	}
	return sum;
}	
}

Gjest Slettet+1374861
Skrevet (endret)

ja jo... det er nok en meget bedre løsning. trenger faktisk ikke lagre noe i variabler i det heltatt. dette er nok

 

public static int tverrsum(int heltall)
{
if(heltall >= 10)
	return (heltall%10) + tverrsum(heltall/10);
else
	return heltall;
}

 

noe upraktisk å ha en statisk metode som er avhengig av en statisk variabel utenfor metoden, synes nå jeg da. føler at en statisk metode ofte skal være litt "uavhengig av kontekst".

Endret av Slettet+1374861
Skrevet
ja jo... det er nok en meget bedre løsning. trenger faktisk ikke lagre noe i variabler i det heltatt. dette er nok

 

public static int tverrsum(int heltall)
{
if(heltall >= 10)
	return (heltall%10) + tverrsum(heltall/10);
else
	return heltall;
}

 

noe upraktisk å ha en statisk metode som er avhengig av en statisk variabel utenfor metoden, synes nå jeg da. føler at en statisk metode ofte skal være litt "uavhengig av kontekst".

 

 

Takk for hjelpen, fant ut av det jeg og:)

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...