내 방법에 대한 최종 답을 인쇄해야합니다. 그러나, 그것은 결국 전체 계산을 보여줍니다! 어떻게 결과를 얻기 위해 프로세스를 제거 할 수 있습니까?내 재귀 적 계승 결과 인쇄
답변
이것은 재귀 함수 호출이며 특수 조건 검사없이 모든 경우에 실행됩니다. 다른 방법으로 인쇄하는 것이 좋습니다.
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));
}
대신에, 다른 하나에서 메소드를 호출 만 최종 값 인쇄 : 당신이 정말 당신이 "트램 폴린"방법의 종류를 생성 할 수있는 방법이 내부에서 그것을 할 필요가 있다면과 같이,
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
}
감사합니다! 그러나 이것이 유일한 방법입니까? – NilR
@Niloo 가능한 대안을 추가했지만 절대적으로 필요하지 않다면 추천하지 않습니다. –
정적 변수를 사용할 수 있으며 은 if (userInput = actualInputInstaticVariable) {// print를 사용합니다. } 이것은 누군가가 필요로하는 것은 아니지만 ... 할 수있는 방법이 있음을 의미합니다. – sravanreddy001
// 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));
,
최종 답변을 얻었을 때 한 번만 인쇄하십시오.
작동하지 않습니다.이 작업이 반복되어 여러 번 인쇄됩니다. –
흠 .. 좋아요, 더 나은 가치를 반환하고 그것을 밖으로 인쇄하십시오. – rbhawsar
그냥 발신자 코드에서 값 인쇄를 반환의 아이디어를 좋아하지 않기 때문에 , 당신은 인수로 "답을 인쇄"플래그를 추가 할 수 있습니다
개인적으로// 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)를 선호합니다.
// 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);
}
다른 방법으로 호출하여 결과를 인쇄하십시오. – r0ast3d
@ r0ast3d가 유일한 방법입니까? – NilR
예 @Niloo가 의사 – r0ast3d