Мне нужно ваше мнение о моем решении, пожалуйста.
Я должен реализовать рекурсивную функцию, которая реализует игру "Китайские кольца".эта игра состоит в том, чтобы надеть n колец, которые изначально отключены.эти кольца представлены в виде таблицы (размер = n).изначально все ячейки таблицы = 0, а конечное состояние -> все ячейки таблицы = 1.В упражнении рекомендуется использовать «китайскую» функцию, определенную ниже для написания рекурсивного решения:
chinese (t, k, b)
{
if (b)
replace(t,k)
else
remove(t,k)
}
известно, что функции «заменить» и «удалить» являются взаимно рекурсивными. «замена» помещает все ячейки из1..k on (t [i] = 1) и «удалить» отключает все ячейки (t [i] = 0).Итак, решение, которое я предлагаю, выглядит следующим образом:
void main ()
{
int b=1;
chinese (t, n, 1);
}
, а для функции замените и удалите:
void replace(int n)
{
if (n > 0) // Do nothing for 0 or fewer rings.
{
replace(n-1);
remove(n-2);
printf("put on ring %d",n);
replace(n-2);
}
}
void remove(int n)
{
if (n > 0) // Do nothing for 0 or fewer rings.
{
remove(n-2);
printf("Take off ring %d",n);
replace(n-2);
remove(n-1);
}
}
так что вы думаете о моем предложенном решении?большое спасибо