Результат factorial
отбрасывается, т. Е. Не привязывается к переменной для дальнейшей обработки.Исправить это просто:
const int result = factorial(x);
cout << "The result is " << result << "\n";
Это хорошая демонстрация, когда атрибут C ++ 17 nodiscard может быть полезен.Если подпись функции читает
[[nodiscard]] int factorial(int n)
, компиляторы будут жаловаться, когда возвращаемое значение не связано с переменной, например,
factorial(42); // warning: ignoring return value of 'int factorial(int)', declared with attribute nodiscard [-Wunused-result]