在使用指针的递归函数中创建计数器?

时间:2019-01-09 12:34:33

标签: c function pointers recursion count

我想计算一下函数移动中有多少移动。如果可能的话,我想使用它的指针,这样我就可以了解更多信息。

我已经使用全局变量做了一个计数器,但是现在我想使用指针,但是我尝试的所有方法都失败了。

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 :(得分:2)

如果我对您的理解正确,那么您想更改参数列表中给定的变量。您可以通过使用指针来实现。例如:

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

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

void main(void)
{
    int a = 0;

    move(&a);
}