Почему рекурсивный вызов возврата вырывается из стека без явного оператора возврата?
Мне показали пример программы для демонстрации рекурсии, которая, похоже, не должна работать, но работает. Логика довольно ясна, но почему она работает, даже если повторный вызов функции не возвращается? Кажется, чтоreturn
команда выпадает из стека, даже если это не такЯ просил Это языковой стандарт или gcc? Я видел это с C и C ++, скомпилированным с gcc на Windows и Linux.
#include
#include
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";
}