質問のタイトルが改善される可能性があります。私が話す内容に特定の名前がある場合はお知らせください。
これも特定の言語向けではありません。私が使用したすべての言語は、関数呼び出しを式として同じように扱います。
だから私は再帰と末尾呼び出しについて読んでいたので、このコードをC++で書きました
#include <iostream>
using std::cout;
int test(int num) {
if (num > 0) {
return test(num - 1);
}
}
int fact(int num) {
return num == 0 ? 1 : num*fact(num - 1);
}
int main() {
cout << test(20) << '\n';
return 0;
}
もちろん、基本ケースは であるため、test(num)
常に0
ifと評価されます。num > 0
n = 0
しかし、なぜ?言語は何を返す必要があるかをどのように認識しますか? test(n - 1)
何を評価するべきかをどのように知るのですか?
編集;
数値の階乗を取得する再帰的な方法を含めました。C++ (または任意の言語) は、何を乗算するかをどのように知るのnum
でしょうか?