C言語なら俺に聞け(入門編)Part 101
■ このスレッドは過去ログ倉庫に格納されています
宿題スレにて、http://toro.2ch.net/test/read.cgi/tech/1335517816/497 が末尾再帰でないとの指摘があり、いろいろと考えていました。
思うに、http://toro.2ch.net/test/read.cgi/tech/1335517816/505 を理由に末尾再帰でない、ということになれば、よくある階乗の再帰関数
int f(int n) {
return (n == 0) ? 1 : n * f(n - 1);
}
ですら末尾再帰ではないことになるのでしょうか?
末尾再帰であるために
int f(int n, int i, int p) {
return (n == i) ? p : f(n, i + 1, p * (i + 1));
}
http://codepad.org/OSvQa0ni
と書かねばならないのでしょうか?
主観的な表現になりますが、なんだかつまらなくなってしまいました。
コメントをいただけるとうれしいです。よろしくお願いいたします。
■ このスレッドは過去ログ倉庫に格納されています