2012-10-18 7 views
0

내 방법에 대한 최종 답을 인쇄해야합니다. 그러나, 그것은 결국 전체 계산을 보여줍니다! 어떻게 결과를 얻기 위해 프로세스를 제거 할 수 있습니까?내 재귀 적 계승 결과 인쇄

+2

다른 방법으로 호출하여 결과를 인쇄하십시오. – r0ast3d

+0

@ r0ast3d가 유일한 방법입니까? – NilR

+0

예 @Niloo가 의사 – r0ast3d

답변

0

이것은 재귀 함수 호출이며 특수 조건 검사없이 모든 경우에 실행됩니다. 다른 방법으로 인쇄하는 것이 좋습니다.

private static int getFactorial(int userInput){ 
    int ans = userInput; 
    if(userInput >1){ 

    ans*= (getFactorial(userInput-1)); 
    } 
    return ans; 

} 
// New method; 
private static void printFactorial(int userInput){ 
    System.out.println("The value of " + userInput + "! is " + getFactorial(userInput)); 
} 
1

대신에, 다른 하나에서 메소드를 호출 만 최종 값 인쇄 : 당신이 정말 당신이 "트램 폴린"방법의 종류를 생성 할 수있는 방법이 내부에서 그것을 할 필요가 있다면과 같이,

System.out.println(getFactorial(5)); 

을 : 함수 외부

private static int getFactorial(int userInput) { 
    int fact = _getFactorial(userInput); 
    System.out.println(fact); 
    return fact; 
} 

private static int _getFactorial(int userInput) { 
    // real implementation 
} 
+0

감사합니다! 그러나 이것이 유일한 방법입니까? – NilR

+0

@Niloo 가능한 대안을 추가했지만 절대적으로 필요하지 않다면 추천하지 않습니다. –

+0

정적 변수를 사용할 수 있으며 은 if (userInput = actualInputInstaticVariable) {// print를 사용합니다. } 이것은 누군가가 필요로하는 것은 아니지만 ... 할 수있는 방법이 있음을 의미합니다. – sravanreddy001

0
// Calculate the factorial value 
private static int getFactorial(int userInput){ 
    int ans = userInput; 
    if(userInput >1){ 

    ans*= (getFactorial(userInput-1)); 

    } 

    return ans; 
} 

인쇄

System.out.println("The value of "+ b +"! is "+ getFactorial(b)); 
,

최종 답변을 얻었을 때 한 번만 인쇄하십시오.

+2

작동하지 않습니다.이 작업이 반복되어 여러 번 인쇄됩니다. –

+0

흠 .. 좋아요, 더 나은 가치를 반환하고 그것을 밖으로 인쇄하십시오. – rbhawsar

0

그냥 발신자 코드에서 값 인쇄를 반환의 아이디어를 좋아하지 않기 때문에 , 당신은 인수로 "답을 인쇄"플래그를 추가 할 수 있습니다

개인적으로
// Calculate the factorial value 
private static int getFactorial(int value, boolean print){ 
    if (value > 1) { 

     value *= getFactorial(value-1, false); 

     if (print) { 
      System.out.println("The value of "+ b +"! is "+ value); 
     } 
    } 
    return value; 
} 

, 하지만, 나는 "trampoline method"(Jake King's answer)를 선호합니다.

0
// Calculate the factorial value 
private static int getFactorial(int userInput){ 
    int ans = userInput; 
    if(userInput >1){ 

    ans*= (getFactorial(userInput-1)); 

    //System.out.println("The value of "+ b +"! is "+ ans); 
    } 
    return ans; 
} 

public static void main(String[] args) 
{ 
    int ans; 
    //get input 
    ans = getFactorial(input); 
    System.out.println("The value of "+ b +"! is "+ ans); 
}