【发布时间】:2016-04-01 23:00:59
【问题描述】:
#include <iostream>
using namespace std;
int main() {
int n,x;
int fact(int);
cin >> n;
x = fact(n);
cout << x;
return 0;
}
int fact(int n) {
if(n!=1)
return n*fact(n-1);
}
在最后一种情况下,当传递给函数 fact 的参数是 1 时,如果我没有在代码中指定它,它如何能够计算出 fact(1) 等于 1?
【问题讨论】:
-
这不起作用:coliru.stacked-crooked.com/a/2c7260c2ee17d556。你需要一个更好的编译器/警告。
-
当你的代码在没有
return的情况下到达函数fact的末尾时,你有未定义的行为。 -
我用codeblocks ide编译了上面的代码,它给了我正确的答案,codeblocks不可靠吗?
-
@srishti77714 我认为学习如何正确定义递归方法会对您有所帮助。代码中的内容充其量只是递归解决方案的一半。
-
@srishti77714 显然您的编译器没有向您发出警告消息。这可能与您在 Code::Blocks 的偏好中要求或未要求的警告级别有关。