2014-12-05 5 views
-1

계승을 이해하기 위해 C++을 사용하면 충분히 간단합니다. (factorial이 5 인 경우) ... 1 * 2, * 3, * 4 * 5의 값을 출력하려면 아무런 문제가 없습니다. 하지만 힘든 시간을 보내고 있으면 5 * 4 값을 표시하고 * 3 값을 표시하는 등의 작업이 필요합니다. 나는 데이터를 인쇄 할 수 있기를 원하며 알아낼 수 없습니다.Factorial 값을 순차적으로 감소 순으로 인쇄합니까?

다른 게시물이 몇 개 있지만 동일한 것을 묻지 않았습니다. 원하는 결과 : 20 60 120 현재 결과는 1 2 6 24 120 입니다. 감사합니다.

+3

'cout <<'한 줄을 위로 이동하십시오. – Ryan

+0

게시물을 편집하여 예상 결과와 결과를 포함하십시오. 감사. –

+0

@YelizavetaYR 답변이 도움이 되었습니까? –

답변

2

그냥 당신이 5 4 3 2 1를 인쇄 할 위

else 
    { 
     cout << " going down" << n << " ";  
     n = n * factorial(n - 1); // Recursive case 
     return n; 
    } 

에 값

else 
    { 
     n = n * factorial(n - 1); // Recursive case 
     cout << " going up" << n << " "; 
     return n; 
    } 

를 인쇄하는 위치를 변경하지만

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

+0

보다 5와 같은 다른 전화를 시작할 수 있습니다! 호출 계승보다 (n-1, n) –

+0

그게 좋습니다! 고맙습니다. – YelizavetaYR