4
public static int exponent(int baseNum) {
    int temp = baseNum *= baseNum;                

        return temp * exponent(baseNum);             
}

現在、上記のメソッドは、デバッグするとn * nを無限大にするので、引き続き機能しますが、インストラクターが10の累乗で指数を見つける必要があるため、この再帰メソッドを10回後に停止する必要があります。

メソッドにはパラメータが1つだけ必要です。指数を呼び出す例を次に示します。

                System.out.println ("The power of 10 in " + n + " is " + 
                    exponent(n));

したがって、出力は次のようになります。

The power of 10 in 2 is 1024

また

The power of 10 in 5 is 9765625
4

6 に答える 6

4

次のようなことをします

public static int exp(int pow, int num) {
    if (pow < 1) 
        return 1; 
    else
        return num * exp(pow-1, num) ;
}

public static void main (String [] args) {     
    System.out.println (exp (10, 5));
}

いつ再帰を停止してスタックから値をポップするかを指示する基本ケース (条件) を忘れないでください。

于 2012-11-01T17:32:37.787 に答える
1

再帰を行うための補助メソッドを作成します。基数と指数の 2 つの引数が必要です。指数に 10 の値を指定して呼び出し、(exponent-1) で再帰します。基本ケースはexponent == 0であり、その場合は 1 を返す必要があります (exponent == 1基本ケースとして使用することもできます。この場合、基本を返す必要があります)。

于 2012-11-01T17:27:58.377 に答える
1

以下は、私のインストラクターである Penn Wu 教授が講義ノートで提供したものです。

public class Exp 
{
public static int exponent(int a, int n)
{
if (n==0) { return 1; } // base
else // 再帰
{
a *= exponent(a, n-1);
を返します。
}
}
public static void main(String[] args)
{
System.out.print(exponent(2, 10));
}
}
于 2015-09-13T17:51:49.253 に答える
0

以下のように2つのパラメータとハンドルの終了条件を持たないでください。

public static int exponent(int baseNum, int power) {
   if(power == 0){
      return 1;
   }else{ 
      return baseNum * exponent(baseNum, power-1);  
   }           
}
于 2012-11-01T17:28:22.733 に答える
0

再帰関数の場合、次のことが必要です。

  1. 停止条件のチェック (つまり、exp が 0 の場合は 1 を返す)
  2. 調整された条件で自分自身を呼び出します (つまり、 base * base^(n-1) )

これがコードです。

public class Test
{
    public static int exponent(int baseNum, int exp)
    {
        if (exp<=0)
            return 1;

        return baseNum * exponent(baseNum, --exp);
    }

    public static void main(String a[])
    {
        int base=2;
        int exp =10;

        System.out.println("The power of "+exp+" in "+base+" is "+exponent(base,exp));
    }

}
于 2012-11-01T17:45:45.420 に答える
0

再帰関数ごとに、ベースケースが必要であることを忘れないでください。停止条件` static double r2(float base, int n) {

    if (n<=0) return 1;
    return  base*r2(base,n-1);

}
于 2015-08-16T20:01:17.400 に答える