2014-12-05 66 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