Мне нужно написать алгоритм рекурсии hanoi с тремя параметрами. Это то, что я получил:Почему моя башня ханойского алгоритма не работает?
#include <stdio.h> #include <stdio.h>
void hanoi(int m, int i, int j);
void move(int start, int end);
int main(){
int n = 0;
int i = 1;
int j = 3;
printf("Enter how many disks you want to move: ");
scanf("%d", &n);
int m = n;
hanoi(m,i,j);
}
void hanoi(int m, int i, int j){
if (m==1)
{
move(i,j);
return;
}
hanoi(m-1,i,2);
move(i,j);
hanoi(m-1,2,j);
}
void move(int start, int end){
printf("A disk moves from position %d. to %d.\n", start,end);
}
Выход при п = 3 является следующее:
Enter how many disks you want to move: 3
A disk moves from position 1. to 2.
A disk moves from position 1. to 2.
A disk moves from position 2. to 2.
A disk moves from position 1. to 3.
A disk moves from position 2. to 2.
A disk moves from position 2. to 3.
A disk moves from position 2. to 3.
Я посмотрел на другие алгоритмы, я знаю, что есть тонны тех, для решения Гулд старой проблемы Ханоя , Тем не менее, все они имеют 4 параметра и используют символы, тогда как я хотел бы использовать только цифры и не учитывать параметр вспомогательной башни в моей функции. Как я могу это исправить? При n = 1 и n = 2 алгоритм работает нормально.
используют пожалуйста описательные имена переменных. –
проблема в том, что '2' жестко запрограммирован. –
@ KarolyHorvath Я вижу ... Как я могу обойти это? Включение переменной со значением 2 в начале функции не решит ее.:/ – SoflolikeAntonio