C 使用指针在递归函数中生成计数器?
我想计算一下move函数中有多少个移动。如果可能的话,我想为它使用指针,这样我可以了解更多 我用一个全局计数器做了一个计数器,但现在我想用指针,但我尝试的一切都失败了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
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()的任何位置给它一个值。每次我尝试此操作时,都会出现错误“参数太少,无法执行函数移动”。我不确定我做错了什么。没有人知道你做错了什么,除非你显示你的代码。我发现了我的错误,并使用此方法实现了我的目标。谢谢你的帮助!每次我尝试此方法时,都会出现错误“参数太少,无法移动函数”。我不确定我做错了什么。没有人知道你做错了什么,除非你显示你的代码。我发现了我的错误,并使用此方法实现了我的目标。谢谢你的帮助!