Создание счетчика в рекурсивной функции с использованием указателей? - PullRequest
0 голосов
/ 09 января 2019

Я бы хотел посчитать, сколько ходов сделано в функции move. Если это возможно, я хотел бы использовать указатели для этого, чтобы я мог узнать больше об этом.

Я сделал счетчик, используя глобальный, но теперь я хотел бы использовать указатели, но все, что я пробовал, не удалось.

void move(unsigned int moves, char source, char spare, char dest)
{
    if (moves == 0) {
    /* no move: nothing to do */
    }
    else {
        move(moves - 1, source, dest, spare);
        printf("Move disk %d from pole %c to pole %c.\n", moves, source, 
dest);
        move(moves - 1, spare, source, dest);
    }
}

int main()
{
    char source = 'A';
    char spare = 'B';
    char dest = 'C';

    int moves = size();

    move(moves, source, spare, dest);


    return 0;
}

1 Ответ

0 голосов
/ 09 января 2019

Если я вас правильно понял, вы хотите изменить переменную, указанную в списке параметров. Вы можете сделать это с помощью указателей. Например:

void move(int *pa)
{
    (*pa)++;  // increase the counter by one

    if (*pa < 5) move(pa);
}

void main(void)
{
    int a = 0;

    move(&a);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...