2

なぜこのエラーが発生するのか誰かに教えてもらえますか?それは本当に私を悩ませています。私がやろうとしているのは、kの範囲が1からnであるため、式2 ^k+1の合計を見つけることです。

import java.util.*;

public class mySums
{
private static double n;

public static void main(String[] args)
{
    recurSum(4);
    System.out.println();
}

/*  public static void iterativeSum (int num)
{

}
*/
public static double recurSum (double num)
{
    if (n==1){
      return 1;}
    else {
      return (Math.pow(2.0, n) +1) + recurSum(n-1);}
}
}

ありがとう。

4

2 に答える 2

6

これは、nの代わりに をnum使用しているためですrecurSumn決して変化しない静的変数です。削除する必要があります。num一方、 は に渡すパラメーターですrecurSum。再帰呼び出しのレベルを下げると、その値が減少し、最終的にヒット1して終了できます。

public static double recurSum (double num) {
    if (num==1) {
        return 1;
    } else {
        return (Math.pow(2.0, num) +1) + recurSum(num-1);
    }
}
于 2012-11-01T00:19:02.803 に答える
1

精度の問題があるため、ダブルで「==」を使用しないでください。再帰が終了することはありません。

に変更します

if (n <= 1)

また、関数が引数「num」を取るため、「n」は関数で定義されていないことに気付きましたが、ここでは単なるタイプミスだと思います。

于 2012-11-01T00:19:46.110 に答える