Почему рекурсивный вызов возврата вырывается из стека без явного оператора возврата?

Мне показали пример программы для демонстрации рекурсии, которая, похоже, не должна работать, но работает. Логика довольно ясна, но почему она работает, даже если повторный вызов функции не возвращается? Кажется, что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";
}

Ответы на вопрос(4)

Ваш ответ на вопрос