我不明白为什么我的代码会打印字符串double。
void find_first_index(char* str,char*strcopy_0, char* strcopy_1){
char* find_x;
find_x = strchr(str,'x');
//set x equals to 0
*find_x='0';
//call recursive
strcpy(strcopy_0, str);
*find_x = '1';
strcpy(strcopy_1,str);
}
void binary_permute(char* str){
char strcopy_0[100];
char strcopy_1[100];
//base case //if no x exists in str
if(strchr(str, 'x') == NULL){
printf("%s\n", str);
}
//if count is not zero
else{
//we need to loop through the string again
find_first_index(str, strcopy_0, strcopy_1);
binary_permute(strcopy_0);
binary_permute(strcopy_1);
printf("%s\n", strcopy_0);
printf("%s\n", strcopy_1);
}
}
输入0x0x0将导致
00000
00010
00000
00010
01000
01010
01000
01010
而不是仅打印一次
00000
00010
01000
01010
我最好的客人是我在一个函数中进行了两次递归调用太多。 有没有其他方法可以做到这一点?