2015-07-19 53 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

其實我在一年前問過這個問題......現在我找到了解決辦法。因此,我沒有寫出來,只是想與你澄清,先生。 –