Я сделал дерьмовую программу на С ++ для вычисления факториала введенного значения, в которой я написал две функции для независимого выполнения фактических вычислений (одна итеративная, другая рекурсивная). Что не имеет для меня никакого смысла, так это почему итеративный факторный коллапс при n = 13, но рекурсивный проходит до верхней границы беззнакового long long int?
PS Я бы был благодарен за любые советы относительно качества моего кода, и с радостью исправлю его, спасибо.
#include <iostream>
using namespace std;
unsigned long long int rekursiv_fak (int); // function prototyping
unsigned long long int iterativ_fak (int);
int main () {
unsigned int n; // factorial is defined only for positive integers !!
cout << "Enter a positive integer value: ";
cin >> n;
cout << "The factorial of " << n << " is equal to: " << iterativ_fak(n) << " or alternatively " << rekursiv_fak(n) << endl;
return 0;
}
unsigned long long int rekursiv_fak (int n) {
if (n == 1)
return 1;
return n * rekursiv_fak(n - 1);
}
unsigned long long int iterativ_fak (int n) {
for (int i{n - 1}; i > 0; --i)
n *= i;
return n;
}