So hab das Problem nun endlich mit ein "wenig" Hilfe gelöst, ich poste einfach mal den fertigen Code wenn es jemanden interressiert.

Code:
boolean FindeLoesung(int index, double loesung) {
   // index       = aktuelle Schrittzahl
   // loesung     = Referenz auf bisherige Teil-Lösung

   int schritt = 0;

   // while(es gibt es noch neue Teil-Lösungsschritte)
   while (schritt !=4 ) {
      // Wähle einen neuen Teil-Lösungsschritt schritt;
      schritt ++;   // Weg nach 1. oben, 2. rechts, 3. unten
      // und 4. links zu erweitern versuchen.
      if(schritt==1) {}else{
   if(schritt==2){ kara.turnRight();}
   if(schritt==3){kara.turnLeft();}
   if(schritt==4){kara.turnLeft(); kara.turnLeft();} 
	  }
   // Tests, ob schritt gültig ist
      boolean ok = true;
      // Test, ob schritt innerhalb Brett bleibt

      // Test, ob schritt durch Wand führt (sofern innerhalb)
      if (kara.treeFront()) ok = false;
      // Test, ob schritt auf ein bereits besuchtes Feld führt
      if (kara.leafFront()) ok = false;
	  if (kara.mushroomFront()) {return true;}
      // if (schritt ist gültig)
      if (ok) {kara.move();
      loesung=loesung + schritt;   // Erweitere loesung um schritt
         // Markiere neues Feld mit aktueller Schrittzahl
		kara.putLeaf();

         // Visualisierung
            

         // if (loesung noch nicht vollständig)
		if (!kara.mushroomFront()) { 
            // rekursiver Aufruf von FindeLoesung
            if (FindeLoesung(index+1, loesung)) {
               // Lösung gefunden   
               return true;
            } else {
               // Wir sind in einer Sackgasse:
               // Mache schritt rückgängig: Backtracking
               kara.turnLeft();
               kara.turnLeft();
               
			   kara.move();
               kara.turnLeft();
               kara.turnLeft();
               
                           
            }
         } else return true; // Lösung gefunden -> fertig      
      } 
	  
		if(schritt==3){ kara.turnRight();}
	 if(schritt==2){kara.turnLeft();}
    if(schritt==4){kara.turnLeft(); kara.turnLeft();} 
   }
   return false; // keine Lösung gefunden
}



void KaraProgram::myProgram() {
/*   
   Hier beginnt das Kara-Hauptprogramm:
*/
	if(FindeLoesung(0,0)==true){tools.showMessage("Ausgang gefunden");} 
	else{tools.showMessage("Gibbet keinen");}
}