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