C 使用指针在递归函数中生成计数器?

C 使用指针在递归函数中生成计数器?,c,function,pointers,recursion,count,C,Function,Pointers,Recursion,Count,我想计算一下move函数中有多少个移动。如果可能的话,我想为它使用指针,这样我可以了解更多 我用一个全局计数器做了一个计数器,但现在我想用指针,但我尝试的一切都失败了 void move(unsigned int moves, char source, char spare, char dest) { if (moves == 0) { /* no move: nothing to do */ } else { move(moves - 1, so

我想计算一下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;
}

如果我理解正确,您希望更改参数列表中给定的变量。您可以通过使用指针来实现这一点。例如:

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

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

void main(void)
{
    int a = 0;

    move(&a);
}
void移动(int*pa)
{
(*pa)++;//将计数器增加一
如果(*pa<5)移动(pa);
}
真空总管(真空)
{
int a=0;
搬家(&a);
}

如果我理解正确,您希望更改参数列表中给定的变量。您可以通过使用指针来实现这一点。例如:

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

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

void main(void)
{
    int a = 0;

    move(&a);
}
void移动(int*pa)
{
(*pa)++;//将计数器增加一
如果(*pa<5)移动(pa);
}
真空总管(真空)
{
int a=0;
搬家(&a);
}

发布一些您尝试过的东西,这样我们可以帮助您理解为什么它们不起作用:)无需保持全局变量。只需在main()本身或您想从何处调用move()中给它一个值。请发布一些您尝试过的内容,这样我们就可以帮助您理解它们不起作用的原因:)无需将其保留为全局变量。只需在main()本身或调用move()的任何位置给它一个值。每次我尝试此操作时,都会出现错误“参数太少,无法执行函数移动”。我不确定我做错了什么。没有人知道你做错了什么,除非你显示你的代码。我发现了我的错误,并使用此方法实现了我的目标。谢谢你的帮助!每次我尝试此方法时,都会出现错误“参数太少,无法移动函数”。我不确定我做错了什么。没有人知道你做错了什么,除非你显示你的代码。我发现了我的错误,并使用此方法实现了我的目标。谢谢你的帮助!