回答
假设当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
能否请您解释一下 –