Rekursion funktioniert nicht

Neue Frage »

Auf diesen Beitrag antworten »
Haevelin Rekursion funktioniert nicht

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.
 
Auf diesen Beitrag antworten »
eulerscheZahl

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);
	}
}
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »