Я делаю программу Tower of Hanoi - есть 3 штифта и стопка дисков на колышке 1 в порядке наибольшего размера к самому маленькому (наибольший на дне, самый маленький сверху). Теперь вам нужно переместить все диски с привязки 1 на привязку 3, вы можете использовать привязку 2 в качестве места для хранения других дисков. До сих пор я получил правильное размещение дисков для работы (каждый диск перемещается правильно), теперь мне нужно создать переменную счетчика, чтобы показать, сколько ходов потребовалось для определенного количества дисков, введенных пользователем. Например, 3 диска занимают минимум 7 ходов.Башни Ханойской программы - счетчик
https://www.mathsisfun.com/games/towerofhanoi.html
Вы можете видеть, что я какой-то прокомментировал некоторые Moves ++, но везде, где я размещаю счетчик никогда не похоже на работу.
public class TowerOfHanoi
{//open class
public void Answer(int numOfDisks, String Peg1, String Peg2, String Peg3, int Moves)
{//open public void Answer
Moves++;
if (numOfDisks == 1)
{//open if
//Moves++;
System.out.println("\nNumber of Moves so far: " + Moves + "\nMove disk on Peg " + Peg1 + " to Peg " + Peg3);
}//close if
else
{//open else
//Moves++;
Answer(numOfDisks - 1, Peg1, Peg3, Peg2, Moves);
System.out.println("\nNumber of Moves so far: " + Moves + "\nMove disk on Peg " + Peg1 + " to Peg " + Peg3);
//Moves++;
Answer(numOfDisks - 1, Peg2, Peg1, Peg3, Moves);
}//close else
}//close public void Answer
public static void main (String[]args)
{//open main
TowerOfHanoi TOH = new TowerOfHanoi();
String numOfDisks = JOptionPane.showInputDialog(null, "Enter a number!");
int NumberOfDisks = Integer.parseInt(numOfDisks);
System.out.println("\nNumber of disks chosen: " + NumberOfDisks);
int Moves = 0;
TOH.Answer(NumberOfDisks, "1", "2", "3", Moves);
}//close main
}//close TowerOfHanoi class
Вы пробовали отладки это? – d3dave
это действительно не помогло, просто стало знать, где поставить счетчик vairable – Nick
С 3-мя дисками [D1, D2, D2], когда D1 является самым верхним в начале, D1 перемещается каждый второй раз, D2 каждый четвертый раз и D3 каждый 8-й раз ... plusminus 1. Вам нужно 2^3-1 ходов для 3 дисков. Зачем рассчитывать, можете ли вы вычислить? Для N дисков вам нужно 2^N-1 ходов. – BitTickler