for循环中的值不递增

时间:2017-08-07 12:06:13

标签: c

for循环nn内的值在退出循环后变为0。我希望它按循环中的描述递增。退出后如何让nn保存它的值?

void branch(int *numbers, int left) {
    Int nb, nn;
    nb = 0;
    nn = 0;

    if (left != 0)
        for (int branchn = 1; branchn <= left; branchn++) {
            for (int index = 1; index <= branchn; index++) {
                *(buffer + nb) = *(buffer + nb) * 10 + *(numbers + nn++);
                printf("%d\n", nn);
            }

            nb++;
            length++;

            branch(numbers, left - 1);
        }
    else {
        branchop(length--);
        nb--;
    }
}

2 个答案:

答案 0 :(得分:3)

您的代码存在多个问题,其设计非常混乱:

  • 什么是Int
  • bufferlengthbranchop()的定义是什么?
  • 为什么使用基于1的偏移量?数组索引是基于C。
  • 的0
  • 你为什么要使用递归?
  • nnnbbranch()中自动存储的局部变量;每个新的递归调用都有自己的一组这些变量。您可能希望制作这些static,以便所有调用共享它们,包括递归调用,但代码会变得更加复杂。

我无法提供代码的更正版本,因为您没有提供任何关于它应该实现的内容的线索,并且很难从发布的片段中判断出来。

答案 1 :(得分:1)

实际上,它按设计工作。

您正在递归调用branch(),而branch()会在启动方法时将nn设置为0。当您最终离开递归branch()时,nn将在for()循环内具有指定的递增值。