Последний оператор возврата, выполняемый в функции factorial
, равен return 1;
, почему он возвращает правильное значение, а не 1?Как работают выражения факториала?
#include <iostream>
using namespace std;
unsigned int factorial(unsigned int);
int main()
{
unsigned int a=4;
cout<<factorial(a);
return 0;
}
unsigned int factorial(unsigned int a)
{
if (a==0)
return 1;
else
return a*(factorial(a-1));
}
'Последнего утверждение возврата выполняется в факторных функциях возвращает 1;' Это утверждение неверно. Что заставляет вас думать, что это правда? Я думаю, вы боретесь с концепцией рекурсии. Истинным утверждением будет выражение ** first ** return - '1', последнее - то, что когда-либо было правильным значением. – john