Китайские кольца с рекурсивной функцией - PullRequest
0 голосов
/ 18 февраля 2019

Мне нужно ваше мнение о моем решении, пожалуйста.

Я должен реализовать рекурсивную функцию, которая реализует игру "Китайские кольца".эта игра состоит в том, чтобы надеть 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);
    }
  }

так что вы думаете о моем предложенном решении?большое спасибо

1 Ответ

0 голосов
/ 18 февраля 2019

Пара вещей сразу в главном

 int main(void)
 {
    int b=1; // b is never used
    chinese (t, n, 1); // undefinef t and n
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...