Jokke85 Skrevet 23. januar 2008 Skrevet 23. januar 2008 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?
Gjest Slettet+1374861 Skrevet 23. januar 2008 Skrevet 23. januar 2008 hvilken datatype tar du inn? og du skal absolutt gjøre dette med rekusjon? er like greit med en løkke...
Jokke85 Skrevet 23. januar 2008 Forfatter Skrevet 23. januar 2008 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 23. januar 2008 Skrevet 23. januar 2008 (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 23. januar 2008 av Slettet+1374861
Jokke85 Skrevet 23. januar 2008 Forfatter Skrevet 23. januar 2008 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 24. januar 2008 Skrevet 24. januar 2008 (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 24. januar 2008 av Slettet+1374861
Jokke85 Skrevet 24. januar 2008 Forfatter Skrevet 24. januar 2008 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:)
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå