再帰関数とメモリ スタックの間に直接的な関係はありますか。詳細については、次のコードを検討してください。
public static int triangle(int n) {
System.out.println(“Entering: n = ” + n);
if (n == 1) {
System.out.println(“Returning 1”);
return 1;
} else {
int temp = n + triangle(n - 1);
System.out.println(“Returning“ + temp);
return temp;
}
}
この例では、関数が返すまで、値 2、3、4、5 はどこに格納されますか? それらは LIFO(LastInFirstOut) で返されることに注意してください。これらは、メモリ スタックを処理する再帰の特殊なケースですか、それとも常に一緒になりますか?