2012-10-18 109 views
0

我需要打印我的方法的最終答案。但是,它顯示了整個計算到最後!我怎樣才能消除這個過程,只得到結果?打印我的遞歸析因結果

+2

從另一個方法調用ths並打印結果。 – r0ast3d

+0

@ r0ast3d這是唯一的方法嗎? – NilR

+0

yep @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){//打印。 } 這意味着有多種方式..但不是那些有人需要的方法 – 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; 
} 

就個人而言,儘管如此,我更喜歡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); 
}