January 29, 2005
Jag har en arraylist ArrayList
jag behöver en metod med 3 argument, listan, int nr1 och int nr2
dessa intar innehåller intervallet på den listan jag har, behöver denna funktion för att kunna vänta på siffrorna som:
1,2,3,4,5,6,7 om intervallet är 2-5 så skall de bli 1,5,4,3,2,6,7
Kan nån ge mig nån ide på hur jag skall börja ifall jag vill bygga denna metod rekursivt?
November 19, 2004
public void asdf(ArrayList
Integer tmp = list.get(a);
list.set(a, list.get(b));
list.set(b, tmp);
}
/* jag är väldigt trött atm, så det här kanske inte ens är i närheten av vad du söker efter 😛
Jag hoppas det fungerar
Fast, rekursion har jag ingen aning om hur du ska använda, känns bara onödigt i det här fallet :/ */
May 8, 2001
Lånar lite kod av tidigare postare, denna kod borde funka MEN det är bara de yttersta talen som byter plats. Därför behöver man nu göra ett rekursivt anrop:
public void asdf(ArrayList<Integer> list, int a, int b) {
Integer tmp = list.get(a-1);
list.set(a, list.get(b-1));
list.set(b, tmp);
// Anropa sig själv om det finns minst 2 tal mellan a och b (annars kan de ju inte byta plats)
if(b - a >= 3) {
asdf(list, a++, b--);
}
}
OBS! Jag har inte testat detta men logiskt borde det vara rätt!?
EDIT: Såg att indexeringen inte var rätt i koden jag snodde, index börjar ju på noll så man måste dra 1 från a & b när man hämtar talen från listan!
Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB
2 Guest(s)