次のコードについては混乱します。変数 "temp"に代入される値がどこから来るのかわかりません。何とか、魔法のように、2と4の値が割り当てられます。Java再帰 - これらの値はどこから来ますか?
power()メソッドが実行され、y> 0の場合、メソッド内で発生するのはpower()メソッドが自分自身を呼び出すことだけで、2またはaの値を返すことはできませんその方法からの4。
私は、コードが正しいこと、そしてこれが再帰呼び出しであることを理解していますが、特に、power()メソッド内のどのコード行が、 temp変数に追加します。ここで
public static void main(String[] args)
{
int x = 2;
int y = 3;
System.out.println("Value returned is: " + power(x,y));
}
public static int power (int x, int y)
{
if (y <= 0)
{
return 1;
}
else
{
int temp = power(x, y - 1);
System.out.println("Value of temp before is: " + temp);
System.out.println("Value of x is: " + x);
System.out.println("value of z before is: " + z);
z = x* temp;
System.out.println("value of z after is: " + z);
System.out.println("Value of temp after is: " + temp);
System.out.println("***********************************************");
return z;
}
}
結果、次のとおりです。
Value of temp before is: 1 <==This is assigned 1 by return 1;
Value of x is: 2
value of z before is: 0
value of z after is: 2
Value of temp after is: 1
**********************************
Value of temp before is: 2 <==This is assigned by return z returning to power() method call
Value of x is: 2
value of z before is: 2
value of z after is: 4
Value of temp after is: 2
**********************************
Value of temp before is: 4 <==This is assigned by return z returning to power() method call
Value of x is: 2
value of z before is: 4
value of z after is: 8
Value of temp after is: 4
**********************************
Value returned is: 8
前提条件に応じて2つの 'return'文のうちの1つ。 – Compass
1、2、および4を返す "return z"コードですか? –
'return z'は' 2'と '4'を返し、' return 1'は '1'を返します。デバッガでコードをステップ実行し、 'power(...) 'と渡されたパラメータの値の呼び出しを追跡します。 –