再帰関数を使用するときに return がどのように機能するのか興味があります。たとえば、以下の階乗関数では、実際に計算が行われる前に x が 1 に達します。
int factorial (int x){
if (x==1){
return 1;
}else{
return x * factorial(x - 1);
}
}
仮定しx = 3ます。ロジックに従うと、3 回ループして 1 を返す必要があるようです。
3 != 1- そうでなければ:
3 * factorial (2). - なに
factorial (2)? - トップに戻る:
2 != 1 - そうでなければ:
2 * factorial (1). - なに
factorial (1)? - トップに戻る:
1 == 1, - そう:
return 1.
しかし、もちろん実際には 6 が返されます。