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--;
}
}
答案 0 :(得分:3)
您的代码存在多个问题,其设计非常混乱:
Int
?buffer
,length
和branchop()
的定义是什么?nn
和nb
是branch()
中自动存储的局部变量;每个新的递归调用都有自己的一组这些变量。您可能希望制作这些static
,以便所有调用共享它们,包括递归调用,但代码会变得更加复杂。我无法提供代码的更正版本,因为您没有提供任何关于它应该实现的内容的线索,并且很难从发布的片段中判断出来。
答案 1 :(得分:1)
实际上,它按设计工作。
您正在递归调用branch()
,而branch()
会在启动方法时将nn
设置为0
。当您最终离开递归branch()
时,nn
将在for()
循环内具有指定的递增值。