我看到了一个示例程序来演示递归,它看起来不应该工作但确实有效。逻辑很清楚,但为什么即使没有返回递归函数调用,它也能工作呢?return
即使没有请求,该命令似乎也脱离了堆栈。这是语言标准还是 gcc 的东西?我在 Windows 和 Linux 上用 gcc 编译的 C 和 C++ 看到了它。
#include <iostream>
#include <cstdlib>
using namespace std;
int isprime(int num, int i)
{
if (i == 1) {
return 1;
}
else {
if (num % i == 0)
return 0;
else
isprime(num, i-1); // should be returned
}
}
int main(int argc, char** argv)
{
int input = atoi(argv[1]);
cout << input << "\t" << isprime(input, input/2) << "\n";
}