江添亮のC++入門 (webドラフト版? https://ezoeryou.github.io/cpp-intro/#再帰関数 )
を読んでます。
>例えば以下は階乗を計算する再帰で書かれたループだ。
> int factorial( int n ) { ...
> return n * factorial(n-1) ;
> ...
>このコードは末尾再帰になっている。
>末尾再帰は非再帰のループに機械的に変換できる特徴を持っている
これ factorial(n-1) が返ってきたらスタックに積んである n を掛けないといけませんよね。
厳密には末尾再帰とは言えない気がします。
そういうの無しに「直帰でコール元に値を渡せる場合」に末尾再帰と言えるのだと思ってたんですが、
私の理解が間違っているのでしょうか?
まあ今のコンパイラーは賢いので細かい事気にする必要ないのかもしれませんが。
C++相談室 part146
■ このスレッドは過去ログ倉庫に格納されています
615デフォルトの名無しさん
2019/12/05(木) 11:35:47.86ID:tjjaS4Ug■ このスレッドは過去ログ倉庫に格納されています
