gpt4 book ai didi

c - 如果输入的值大于 3,则函数将永远递归运行

转载 作者:行者123 更新时间:2023-11-30 14:41:02 24 4
gpt4 key购买 nike

作为强制性前言,我是 C 语言新手,很可能只是错过了一些非常明显的东西。我很感激为解决我的愚蠢问题所花费的所有时间和精力。

我有一个递归函数,其目的是打印出由较小的 x 字符组成的大“x”,其中宽度是 x 每条边的长度。例如,宽度“3”将具有以下输出:

Shape:

X X
X
X X

Returning.

哪里“归来”。在返回主程序之前打印。

以下函数仅对宽度为 1 和 3 执行此操作,但对宽度为 5、7、9 等则无法执行此操作。

void Recurse(int left, int right, int flag, int num){

int i;

if(((left && right) == num/2) && (flag == 0)){
for(i=0;i<num;i++){
if (i == (num/2) ){
printf("X");
}
else
printf(" ");
}
printf("\n");
flag = 1;
Recurse(left-1, right+1, flag, num);
}
else if(flag == 0){
for(i=0;i<num;i++){
if((i == left) || (i == right)){
printf("X");
}
else
printf(" ");
}
printf("\n");
Recurse(left+1, right-1, flag, num);
}

else if(flag == 1){
for(i=0;i<num;i++){
if((i == left) || (i == right)){
printf("X");
}
else
printf(" ");
}
printf("\n");
if (((left == 0) && (right == num-1)) && (flag == 1))
printf("\nReturning.\n");
return;
Recurse(left-1, right+1, flag, num);
}
}

我的主函数中唯一的东西是用一些奇数 int 初始化宽度,并调用该函数。我想在稍微清理逻辑之前先正确打印代码。感谢您提供的任何帮助。

最佳答案

 if(((left && right) == num/2) && (flag == 0)){

left && right 是一个 bool 值,可能是您想要的

if ((left == num/2) && (right == num/2)  && (flag == 0)){

关于c - 如果输入的值大于 3,则函数将永远递归运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55172710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com