Aus Iteration mach Rekursion

Status
Nicht offen für weitere Antworten.

wersi77

Aktives Mitglied
Hallo,

ich möchte eine Klasse schreiben, die mir sämtliche Zeichenketten zu einem vorgegebenen Alphabet erstellen kann. Die Länge der Zeichenkette soll man festlegen können. Derzeit funktioniert das Ding leider nur iterativ mit 2 For-Schleifen. Bei einer längeren Zeichenkette als 2 Zeichen müsste ich mehrere For-Schleifen schachteln. Kann man das nicht wunderbar rekursiv lösen?

Code:
public class RandomKey {

	//String patternArray[]=new String[26];
	String patternArray[]={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",""};
	/**
	 * @param args
	 */
	
	public RandomKey(){
		super();
	}
	
	
	
	public void keyAusgabe(String key){
		System.out.println(key);
	}
	
	
	public static void main(String[] args) {
		RandomKey rk=new RandomKey();
		String ergebnis;
		for(int i=0; i<=26;i++){
			//rk.keyAusgabe(rk.patternArray[i]);
			for(int j=0; j<=25;j++){
				ergebnis=rk.patternArray[i]+rk.patternArray[j];
				rk.keyAusgabe(ergebnis);
			}
		}

	}
	
	

}

Leider fand ich Rekursion immer etwas schwer, deshalb fällt mir dazu zur Zeit nichts ein.
Wer kann helfen?
 
Ich hab so etwas auch noch nie gemacht, aber meiner Meinung nach musst du eine Funktion schreiben, die sich immer wieder selbst aufruft(rekursiv) bis eine Abbruchbedingung eintrifft. Hier ein Muster einer solchen Funktion:

public int fib(int a) {
if(a>2) {
return(fib(a-1) + fib(a-2));
}
else if(a==2) {
return 1;
}
}

Ich hoffe ich konnte dir ein wenig helfen.
 
Code:
    public static void perm(char[] array, char[] arrayClone, int k, int x) {
        int i;
        if (x < k) {
            for (i = 0; i < array.length; i++) {
                array[x] = arrayClone[i];
                perm( array, arrayClone, k, x+1);
            }
        } else
            System.out.println(array);
    }
 
Sorry, ich hatte den Code nicht getestet.

Code:
    public static void perm(char[] array, char[] arrayClone, int k, int x) {
        if (x == 0)
            array = new char[k];
        int i;
        if (x < k) {
            for (i = 0; i < arrayClone.length; i++) {
                array[x] = arrayClone[i];
                perm( array, arrayClone, k, x+1);
            }
        } else
            System.out.println(array);
    }

Du startest das z.B. mit:
perm(null, new char[]{'a', 'b', 'c', 'd'}, 8, 0); für Wörter mit 8 Zeichen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben