-1
ハノイの塔の試合でリングの数に基づいて最小限の移動回数を返すメソッドを開発しています。これまでのところ、2^n(nはリングの数)を計算できる基本コードがあります。しかし、1を引くと、メソッドはあたかもリングがないかのように振る舞います。ハノイの塔の最小移動回数をJavaの再帰を使用して計算する
static int countHanoiMoves(int n)
{
int unSubtrctAnswer = 0;
if(n == 0)
{
return 1;
}
int halfPower = countHanoiMoves(n/2);
if (n % 2 == 1)
{
unSubtrctAnswer = (2 * halfPower * halfPower);
}
else
{
unSubtrctAnswer = (halfPower * halfPower);
}
return unSubtrctAnswer - 1;
}
'countHanoiMoves(0)= 1'です。ハァッ? --- 'countHanoiMoves(1)= 1'。 OK。 --- countHanoiMoves(2)= countHanoiMoves(1)^ 2 - 1 = 1^2 - 1 = 1 - 1 = 0'。ハァッ?あなたは本当にあなたのロジックを再考する必要があります。 – Andreas
ところで、[ソリューション](http://mathworld.wolfram.com/TowerofHanoi.html)は '2ⁿ-1'、別名' countHanoiMoves(int n){return(1 << n) - 1; } ' – Andreas