Direkte und Indirekte Rekursion

Ein rekursiver Algorithmus ruft sich selber auf. Man unterscheidet dabei zwischen direkter und indirekter Rekursion.

Ein direkt rekursiver Algorithmus ruft sich bei seiner Ausführung direkt selber auf.

Ein indirekt rekursiver Algorithmus ruft sich nicht direkt, sondern indirekt auf. Dies geschieht Beispielsweise dadurch, dass der Algorithmus bei der Ausführung einen anderen Algorithmus aufruft. Dieser Algorithmus ruft dann bei seiner Ausführung wieder den ersten, ursprünglichen Algorithmus auf.

Folgendes Beispiel ist eine Implementierung in Java von zwei Klassen, die Methoden beinhalten, die genau dass selbe machen. Der Unterschied liegt nur darin, dass der eine Algorithmus direkt und der andere indirekt Rekursiv arbeitet.

// Direkt rekursiver Algorithmus

class DirekteRekursion

{

public void rekursiveMethode(int a)

{

if(a == 0){

System.out.print(“Bin da!”);

}else if(a<0){

rekursiveMethode(a+1);

}else if(a>0){

rekursiveMethode(a-1);

}

}

}

 

// Indirekt rekursiver Algorithmus

class IndirekteRekursion

{

public void methode1(int a)

{

if(a == 0)

{

System.out.print(“Bin da!”);

}else{

methode2(a);

}

}

public void methode2(int a)

{

if(a<0){

methode1(a+1);

}else if(a>0){

methode1(a-1);

}

}

}