Эта программа C# использует рекурсивную функцию и решает ханойскую башню.
Ханойская башня-это математическая головоломка. Он состоит из трех стержней и ряда дисков различных размеров, которые могут скользить на любой стержень. Головоломка начинается с дисков в аккуратной стопке в порядке возрастания размера на одном стержне, самый маленький в верхней части. Мы должны получить такую же стопку на третьем стержне.
Вот исходный код программы C# для демонстрации башни Ханоя. Программа C# успешно компилируется и выполняется с помощью Microsoft Visual Studio. Выходные данные программы также показаны ниже.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
/* * C# Program to Demonstrate Tower Of Hanoi */ using System; class TowerOfHanoi { int m_numdiscs; public TowerOfHanoi() { numdiscs = 0; } public TowerOfHanoi(int newval) { numdiscs = newval; } public int numdiscs { get { return m_numdiscs; } set { if (value > 0) m_numdiscs = value; } } public void movetower(int n, int from, int to, int other) { if (n > 0) { movetower(n - 1, from, other, to); Console.WriteLine("Move disk {0} from tower {1} to tower {2}", n, from, to); movetower(n - 1, other, to, from); } } } class TowersOfHanoiApp { public static int Main() { TowerOfHanoi T = new TowerOfHanoi(); string cnumdiscs; Console.Write("Enter the number of discs: "); cnumdiscs = Console.ReadLine(); T.numdiscs = Convert.ToInt32(cnumdiscs); T.movetower(T.numdiscs, 1, 3, 2); Console.ReadLine(); return 0; } } |
1
В этой программе на C# мы считываем количество дисков, используя переменную cnumdiscs . Выполните функцию movetower(), передав в качестве аргумента значения переменных numdiscs , 1, 3, 2.
Ханойская башня-это математическая головоломка. Он состоит из трех стержней, а также ряда дисков различных размеров, которые могут скользить на любой стержень. Головоломка начинается с дисков в аккуратной стопке в порядке возрастания размера на одном стержне, самый маленький в верхней части. Мы должны получить такую же стопку на третьем стержне.
Мы считываем количество дисков с помощью переменной cnumdiscs. Выполните функцию movetower(), передав значения переменных numdiscs, 1, 3, 2 в качестве аргумента. Используя if проверяем условие значение переменной n больше 0. Если условие истинно, то выполните инструкцию, рекурсивно перемещая диски.
Тестовые случаи во время выполнения
1 2 3 4 |
Enter the Number of Disks : 2 Move Disk 1 from Tower 1 to Tower 2 Move Disk 1 from Tower 1 to Tower 3 Move Disk 1 from Tower 2 to Tower 3 |
Спасибо за этот алгоритм
Пожалуйста 🙂