我需要打印我的方法的最終答案。但是,它顯示了整個計算到最後!我怎樣才能消除這個過程,只得到結果?打印我的遞歸析因結果
回答
這是一個遞歸函數調用,它在沒有特殊條件檢查的情況下在所有情況下執行。從另一種方法打印 是一個不錯的選擇。
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){//打印。 } 這意味着有多種方式..但不是那些有人需要的方法 – 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;
}
就個人而言,儘管如此,我更喜歡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);
}
- 1. 因子程序打印出遞歸
- 2. 打印樹遞歸
- 3. 用遞歸打印「*」
- 4. 打印遞歸樹
- 5. 遞歸 - 打印數
- 6. 遞歸打印C++
- 7. 如何打印來自併發和遞歸函數的結果?
- 8. 打印遞歸步驟
- 9. Ç - 打印出遞歸
- 10. 遞歸棧打印方法
- 11. 打印使用遞歸
- 12. 打印模式遞歸
- 13. C向後遞歸打印
- 14. 打印結果
- 15. 打印我的JS函數的結果
- 16. PHP - 無法打印我的sql結果
- 17. 打印subprocess.call結果
- 18. 打印結果表
- 19. 打印結果XSSFCell.setCellFormula()
- 20. 我的程序打印出預期結果不同的結果
- 21. 遞歸因子
- 22. OCaml的遞歸打印到頂層
- 23. 打印遞歸的文件夾中
- 24. 遞歸打印方法中的陣列
- 25. 遞歸:打印暗示的括號
- 26. 打印功能打印結果?
- 27. 返回遞歸結果
- 28. 遞歸調用結果
- 29. 遞歸結果堆棧
- 30. 打印奇怪的結果
從另一個方法調用ths並打印結果。 – r0ast3d
@ r0ast3d這是唯一的方法嗎? – NilR
yep @Niloo用僞 – r0ast3d