回答
假設當n=1
這意味着sqrt(2)
,當n=2
這意味着sqrt(2 + sqrt(2))
。
double twoPlusSqrt(int n) {
if (n < 1) {
throw new IllegalArgumentException("n must be greater than 0");
} else if (n == 1) {
return Math.sqrt(2);
} else {
return Math.sqrt(2 + twoPlusSqrt(n - 1));
}
}
OP概念說,「我只是在編程初學者」。使用遞歸的解決方案是給予這樣一個人最好的東西嗎? –
@DavidWallace我認爲早期接觸遞歸很好,並且是大多數程序員接近這個程序的自然方式。如果OP正在努力學習,我認爲這是一個問題的一個很好的例子,希望他們會花時間去理解它:) – mjalkio
你想要計算機做的是反覆重複相同的兩個步驟 - 添加兩個和平方根的結果。從n=1
開始,您希望結果爲sqrt(2)
,因此您的起始值應爲0
- 因此,在第一步中,您可以添加兩個平方根結果,並以sqrt(2)
結束。
因此,最簡單的方法來做到這一點,沒有遞歸,就是這樣。
double result = 0.0;
for (int counter = 0; counter < n; counter++) {
result = Math.sqrt(result + 2);
}
System.out.println(result);
@DavidWalace我認爲該程序應該是: double result,result1 = 0.0; for(int counter = 0; counter
真的,如果你使用一個額外的變量就沒有區別。但是,如果您想將其作爲答案張貼,爲什麼不繼續? –
其實我在一年前問過這個問題......現在我找到了解決辦法。因此,我沒有寫出來,只是想與你澄清,先生。 –
- 1. while循環一直持續到達到
- 2. 暫停rootEpic直到持續完成
- 3. 找到big.Int的平方根
- 4. 計算平均值直到達到NA值,然後繼續R
- 5. 轉換由`\ N`分離的垂直的長方形,水平
- 6. 直方圖平滑
- 7. 平方根下面的遞推關係的解是什麼:T(n)= T([√n])+ logn?
- 8. C++負平方根
- 9. 平方根移位
- 10. 模N的立方根
- 11. 如何根據Gremlin PipeLine中的方向查詢到第n個水平
- 12. 根據經驗估算項目持續時間
- 13. C++發現平方根到精度
- 14. Gitlab持續交付選項
- 15. 直到\ r \ n在Java中
- 16. 垂直到水平?
- 17. 如何保持程序循環直到輸入'y'或'n'
- 18. 的MySQL +持續時間根據狀況
- 19. 如何持續觀察範圍變量直到更新
- 20. 計算從過去一直到現在的持續時間php
- 21. Kafka Stream:首先輸出到主題或直接持續?
- 22. 如何平滑直方圖?
- 23. 繼續下拉框直到
- 24. 錯誤直方圖C++根
- 25. MATHML平方根和因子在HTML5不支持
- 26. Java平方根計算器?
- 27. 計算2的平方根
- 28. 簡單的平方根環
- 29. C++遞歸平方根
- 30. 平方根函數(math.h) - C
遞歸可能是值得探討 – tilois
能否請您解釋一下 –