C 调试变量生成器
我想请求帮助调试这段简单的 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);}
}
}}
该函数应该生成包含 n 个 1 和 0 的字符串,并用 0 到 n-1 运算符分隔 例如,如果 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
我是一名初学者程序员,因此将不胜感激任何提示。
I would like to ask for help with debugging this simple piece of C code:
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);}
}
}}
The function is supposed to generate strings which contain n 1s and 0s separated by 0 to n-1 operators
For example if n==3 then the output should be:
111
1+11
11+1
1+1+1
1*11
11*1
1*1*1
....
0/00
00/0
0/0/0
000
I'm a beginner programmer so would appreciate any tips.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对函数的每次调用都使用相同的数组,并且您可以通过覆盖数组的现有元素来“插入”符号。这些都不是您想要发生的。
另外,你是如何调用该函数的? “数组”中最初包含什么?
Every call to the function is using the same array, and you "insert" symbols by over-writing an existing element of the array. Neither of these is what you want to happen.
Also, how are you calling the function? What is initially contained in the 'array'?
您应该考虑研究回溯算法,因为在我看来这是一个回溯问题。
You should consider studying backtracking algorithms, since in my opinion this is a backtracking problem.