2014-12-05 44 views
-1

使用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 请指教。 谢谢。

+3

将'cout <<'向上移动一行。 – Ryan 2014-12-05 00:09:50

+0

请编辑您的文章,以包括您期望的结果和您获得的结果。谢谢。 – 2014-12-05 00:09:51

+0

@YelizavetaYR答案有帮助吗? – 2014-12-05 00:25:30

回答

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; 
    } 
} 
+0

以上述语句打印5 4 3 2 1我没有问题就能做到。我想打印20 60 120.(每组数值的实际乘积是多少)。我想排除5 - 我们只是想要增加值。 – YelizavetaYR 2014-12-05 18:54:57

+0

比你可以开始不同的呼叫,就像你想要5!比通话阶乘(n-1,n) – 2014-12-05 18:58:10

+0

太棒了!谢谢。 – YelizavetaYR 2014-12-05 19:48:05