Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Rekursion funktioniert nicht » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Rekursion funktioniert nicht
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

Rekursion funktioniert nicht Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,
folgendes Problem: eine Zahl n soll als Summe von Zahlen kleiner n dargestellt werden. Alle Möglichkeiten dies zu erreichen sollen ausgegeben werden. Ich habe folgenden Code:





code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
import java.util.ArrayList;
   public class Zahlenreihe {
 	ArrayList<int[]> ergebnis= new ArrayList<int[]>();

 	 	 	public void auswerten(int[] reihe, int wert){
 		int summe=0;
 		int index=0;
 		for (int i=0; i<reihe.length; i++){
 			summe+=reihe[i];
 			if (reihe[i]==0){
 				index=i;
 				break;
 			}
 		} 		// System.out.println(summe);
 		if (summe==wert) { 			// System.out.println(summe);
 			ergebnis.add(reihe);
 			return;  		}
 		if (summe>wert) return;
  		if (summe<wert){
 			for (int i=1; i< wert; i++){
 				reihe[index]=i;
 				auswerten(reihe, wert);
 			} 		} 	}


 	 	 	  	public static void main(String[] args) { 
		// TODO Auto-generated method stub
 int N=5;
 int[] uebergabe=new int[N+1];
 for (int i=0; i<N+1;i++){
 	uebergabe[i]=0; }
 Zahlenreihe zr = new Zahlenreihe();
 zr.auswerten(uebergabe, N);
 for (int i=0; i<zr.ergebnis.size();i++){
 	for (int j=0; j<zr.ergebnis.get(i).length;j++){
 		System.out.print(zr.ergebnis.get(i)[j]+" "); 	}
 	System.out.println(); }
 	}  }



Der Code funktioniert nicht, als Ausgabe erhalte ich:


4 4 4 4 4 0


Also keine Darstellung der Zahl 5, ganz abgesehen davon, dass nur ein Wert dort steht.
08.05.2016 15:25 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe dir mal nur die monoton fallenden Folgen generiert.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
public class Zahlenreihe {
	public static void createNumber(int[] numbers, int index, int remaining, int last) {
		if (remaining == 0) {
			if (index > 1) {
				for (int i = 0; i < index; i++)
					System.out.print(numbers[i] + " ");
				System.out.println();
			}
		}
		for (int next = Math.min(last, remaining); next > 0; next--) {
			numbers[index] = next;
			createNumber(numbers, index + 1, remaining - next, next);
		}
	}

	public static void main(String[] args) {
		createNumber(new int[5], 0, 5, 5);
	}
}


__________________
Syntax Highlighting fürs Board (Link)
08.05.2016 17:52 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Rekursion funktioniert nicht