我想请求帮助调试这段简单的C代码:

void generator (int place, char *array, int n, int lol){
int i;
char c[6]={'1','0','+','-','*','/'};

if(n==0){
printf("%s\n",array);
return;
}
for(i=0; i<6; i++){
    if (lol==0){
        if (i>1) break;
        array[place]=c[i];
        lol=1;
        generator(place+1, array, n-1, lol);
    }
    if(lol==1){
        array[place]=c[i];
        if(i>1){
            lol=0;
            generator(n+1, array, n, lol);
        }
        else{ lol=1;
    generator(place+1, array, n-1, lol);}
    }
}}

该函数应该生成包含由0到n-1运算符分隔的n 1和0s的字符串
例如,如果n==3,则输出应为:
111
1+11
11+1
1+1+1
1*11
11*1
1*1*1
....
0/00
00/0
0/0/0
000

我是一个初级程序员,所以希望你能给我一些建议。

最佳答案

对函数的每一次调用都使用相同的数组,并且通过写入数组的现有元素来“插入”符号。这两件事你都不想发生。
另外,您如何调用函数“数组”中最初包含什么?

关于c - C调试变量生成器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4356442/

10-09 20:05