Charles Imbusch
2005-07-24 07:11:51 UTC
Hallo zusammen,
um mir die schlichte Rekursion konkret vorstellen zu können, habe ich die
Fakultätsfunktion als Beispiel genommen und folgendermaßen implementiert:
public class fakClass2{
static int fak(int r, int i){
if( i == 0 ){
return(r);
}
else{
return(fak(r * i, i - 1));
}
}
static int fak(int n){
return(fak(1, n));
}
}
Als kleines Testprogramm:
public class fakClass2test{
public static void main(String args[]){
for(int i = 0; i < 6; i++)
{
System.out.println(i + ": " + fakClass2.fak(i));
}
}
}
Das Programm liefert mir auch die richtigen Werte (vorrausgesetzt n >= 0).
Meine Frage ist jetzt allerdings, kann ich davon ausgehen, dass
normalerweise immer nur zwei Inkarnationen von fak existieren? Also, wenn
das Ergebnis fertig ist bei der Bedingung i = 0, dann auch wirklich ohne
Umwege zum ursprünglichen Aufrufer zurückgeht?
Leider ist mir keine Idee eingefallen, wie ich das testen könnte, Infos
dazu habe ich leider nicht ausreichend gefunden.
Danke im vorraus,
Charlie
um mir die schlichte Rekursion konkret vorstellen zu können, habe ich die
Fakultätsfunktion als Beispiel genommen und folgendermaßen implementiert:
public class fakClass2{
static int fak(int r, int i){
if( i == 0 ){
return(r);
}
else{
return(fak(r * i, i - 1));
}
}
static int fak(int n){
return(fak(1, n));
}
}
Als kleines Testprogramm:
public class fakClass2test{
public static void main(String args[]){
for(int i = 0; i < 6; i++)
{
System.out.println(i + ": " + fakClass2.fak(i));
}
}
}
Das Programm liefert mir auch die richtigen Werte (vorrausgesetzt n >= 0).
Meine Frage ist jetzt allerdings, kann ich davon ausgehen, dass
normalerweise immer nur zwei Inkarnationen von fak existieren? Also, wenn
das Ergebnis fertig ist bei der Bedingung i = 0, dann auch wirklich ohne
Umwege zum ursprünglichen Aufrufer zurückgeht?
Leider ist mir keine Idee eingefallen, wie ich das testen könnte, Infos
dazu habe ich leider nicht ausreichend gefunden.
Danke im vorraus,
Charlie