30 分前、ゼロ以外の整数を入力として受け取る単純な階乗計算機を作成しました。いくつかの値についてテストした後、12! までしか正しく機能しないことに気付きました。
私はプログラミングを始めて数か月になりますが、正直なところまだ初心者です。「プログラミングモード」にすばやく戻ることができるように、再帰を使用することにしました(私の好み)。
ほぼ1時間チェックして修正しました。アルゴリズムのどこが悪いのかよくわかりません。
これは私のコードです:
#include <iostream>
using namespace std;
int factorial(int);
int main()
{
int usrInput = 0; //initialize input variable
cout << "Please input the factorial you want to calculate: ";
cin >> usrInput;
while(usrInput < 1)
{
cout << "Please input a valid number: ";
cin >> usrInput;
} //end while
cout << "\nAnswer: " << factorial(usrInput) << '\n';
return 0;
}
int factorial(int n)
{
int product = n;
if(n < 2)
product = 1;
else
{
product *= factorial(n-1);
cout << "\n" << product; //debugging line
} //end if else
return product;
}