再帰関数を使用するときに 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 が返されます。