使用C ++来计算阶乘是很简单的。打印即将出现的值(如果阶乘为5)... 1 * 2,* 3,* 4 * 5也没问题 - 我想我已经在下面做了。 但是我很难做的就是告诉我5 * 4然后值* 3然后值* 2等我希望能够打印下来的数据,我似乎无法弄明白。
#include <iostream>
using namespace std;
int factorial(int n);
int main()
{
int number;
cout << "Enter an integer value ";
cin >> number;
cout << "The factorial of " << number << " is ";
cout << factorial(number) << endl;
}
int factorial(int n)
{
if (n == 0)
return 1; // Base case
else
{
n = n * factorial(n - 1); // Recursive case
cout << " going up" << n << " ";
return n;
}
}
还有其他一些帖子,但我没有找到一个问同样的事情。 期望的结果是:20 60 120 目前的结果是1 2 6 24 120 请指教。 谢谢。
答案 0 :(得分:2)
只需更改打印值的位置
else
{
n = n * factorial(n - 1); // Recursive case
cout << " going up" << n << " ";
return n;
}
到
else
{
cout << " going down" << n << " ";
n = n * factorial(n - 1); // Recursive case
return n;
}
上面会打印5 4 3 2 1
但是如果你想要像
5 20 60 ...
比你必须稍微更改递归定义。
#include<iostream>
using namespace std;
int factorial(int n,int temp);
int main()
{
int number;
cout << "Enter an integer value ";
cin >> number;
cout << "The factorial of " << number << " is ";
cout << factorial(number,1) << endl;
}
int factorial(int n,int temp)
{
if (n == 0)
return temp; // Base case
else
{
cout << " going down" << n * temp << " ";
factorial(n - 1,n*temp); // Recursive case
//return n;
}
}