2015-07-19 56 views
-2

如何用Java做下面的程序: 的sqrt(2 + SQRT(2 +开方(2 .....直到N项持续平方根直到n项

请帮我它越快越好。 我只是在编程初学者。

在此先感谢。

+0

递归可能是值得探讨 – tilois

+0

能否请您解释一下 –

回答

0

假设当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)); 
     } 
} 
+0

OP概念说,“我只是在编程初学者”。使用递归的解决方案是给予这样一个人最好的东西吗? –

+0

@DavidWallace我认为早期接触递归很好,并且是大多数程序员接近这个程序的自然方式。如果OP正在努力学习,我认为这是一个问题的一个很好的例子,希望他们会花时间去理解它:) – mjalkio

0

你想要计算机做的是反复重复相同的两个步骤 - 添加两个和平方根的结果。从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); 
+0

@DavidWalace我认为该程序应该是: double result,result1 = 0.0; for(int counter = 0; counter

+0

真的,如果你使用一个额外的变量就没有区别。但是,如果您想将其作为答案张贴,为什么不继续? –

+0

其实我在一年前问过这个问题......现在我找到了解决办法。因此,我没有写出来,只是想与你澄清,先生。 –