【问题标题】:Making a counter in a recursive function using pointers?使用指针在递归函数中创建计数器?
【发布时间】:2019-06-04 05:43:29
【问题描述】:

我想计算函数 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;
}

【问题讨论】:

  • 发布一些您尝试过的东西,以便我们帮助您了解为什么它们不起作用:)
  • 不需要保持全局变量。只需在 main() 本身中给它一个值,或者在你想从哪里调用 move() 。

标签: c function pointers recursion count


【解决方案1】:

如果我理解正确,您想更改参数列表中给出的变量。您可以通过使用指针来做到这一点。例如:

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

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

void main(void)
{
    int a = 0;

    move(&a);
}

【讨论】:

  • 每次我尝试这个我都会收到错误“函数移动的参数太少”我不确定我做错了什么。
  • 除非你出示你的代码,否则没人知道你做错了什么
  • 我发现了我的错,并使用这种方法来达到我的目标。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2017-10-13
  • 2017-07-23
  • 2023-03-22
  • 1970-01-01
  • 2017-03-25
  • 2021-02-21
  • 2021-04-18
  • 1970-01-01
相关资源
最近更新 更多