C 循环内的值不递增
退出循环后,循环C 循环内的值不递增,c,C,退出循环后,循环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 &l
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--;
}
}
void分支(整数*数字,整数左){
Int nb,nn;
nb=0;
nn=0;
如果(左!=0)
对于(int branchn=1;branchn实际上,它是按设计工作的
您正在递归调用branch()
,branch()
将在方法启动时将nn
设置为0
。当您最终离开递归branch()
时,nn
将在for()
循环中具有指定的递增值。实际上,它按设计工作
您正在递归调用branch()
,branch()
将在方法启动时将nn
设置为0
。当您最终离开递归branch()
时,nn
将在中为()
循环。您的代码存在多个问题,其设计非常混乱:
- 什么是
Int
buffer
、length
和branchop()
的定义是什么
- 为什么使用基于1的偏移量?数组索引在C中基于0
- 为什么使用递归
nn
和nb
是本地变量,自动存储在branch()
中;每个新的递归调用都有自己的一组变量。您可能希望使这些成为静态的,以便所有调用(包括递归调用)共享它们,但代码将变得更加复杂
我无法提供代码的更正版本,因为您没有给出任何关于它应该实现什么的线索,并且很难从发布的片段中分辨出来。您的代码有多个问题,其设计非常混乱:
- 什么是
Int
buffer
、length
和branchop()
的定义是什么
- 为什么使用基于1的偏移量?数组索引在C中基于0
- 为什么使用递归
nn
和nb
是本地变量,自动存储在branch()
中;每个新的递归调用都有自己的一组变量。您可能希望使这些成为静态的,以便所有调用(包括递归调用)共享它们,但代码将变得更加复杂
我无法提供该代码的更正版本,因为您没有给出任何关于它应该实现什么的线索,并且很难从发布的片段中分辨出来。您可以将其设置为静态
。或者更好的做法是将其作为参数传递给函数。或者更好的做法是,摆脱这个无效的代码,这可能会导致优化,并将其全部替换为一个简单的for循环。您可以使其成为静态的
。或者更好地将其作为参数传递给函数。或者更好的是,摆脱这个无效的代码,它可能会或可能不会进行尾部优化,并将其全部替换为一个简单的for循环。