Задачка такова: имеются три шеста - первый(начальный) второй(дополнительный) и третий(конечный).
На начальном шесте имеется n-ое количество(на практике не больше 10:)) колец, причём размер каждого следующего кольца к верху башни убывает. Необходимо переместить всю башню из колец с первого шеста на третий, используя второй как дополнительный шест. Условие: кольца с большим размером не должны перемещаться на кольца с меньшим размером.
Решение на языке Си:
Код: Выделить всё
/* ханойские башни */
#include <stdio.h>
main() /* вызывающая */
{ void tn(int, int, int, int); /* функция*/
int n;
scanf(" %d",&n);
tn(n,2,3,1);
}
void tn(int n, int i, int j, int w) /* рекурсивная */
{ if (n>1) /* функция */
{ tn (n-1,i,w,j);
tn (1,i,j,w);
tn (n-1,w,j,i);
}
else printf(" \n %d -> %d",i,j);
return;
}P.S. задачку подкинули в универе, решение я нашёл, но тока никак понять не могу