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--;
}
}
最佳答案
您的代码存在多个问题,其设计非常困惑:
- 什么是
Int
? buffer
、length
和branchop()
的定义是什么?- 为什么使用基于 1 的偏移量?数组索引是基于 C 的 0。
- 你为什么使用递归?
nn
和nb
是在branch()
中自动存储的局部变量;每个新的递归调用都有自己的一组这些变量。您可能希望将这些static
设置为由所有调用共享,包括递归调用,但代码会变得更加复杂。
我无法提供代码的更正版本,因为您没有提供任何关于它应该实现什么的线索,而且很难从发布的片段中分辨出来。
关于c - for循环内的值不递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45547154/