我想数一数函数移动中有多少个移动。如果有可能的话,我想使用指针,这样我可以了解更多。
我用全局计数器做了一个计数器,但现在我想用指针,但我尝试的一切都失败了。

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;
}

最佳答案

如果我理解正确,您需要更改参数列表中给定的变量。你可以用指针来做。例如:

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

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

void main(void)
{
    int a = 0;

    move(&a);
}

关于c - 在使用指针的递归函数中创建计数器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54110314/

10-09 08:41