gpt4 book ai didi

c - 为什么我的递归函数即使到了return(0)也不会停止?

转载 作者:太空宇宙 更新时间:2023-11-04 02:24:26 25 4
gpt4 key购买 nike

我制作了一个递归函数,它浏览一个列表并尝试将列表的各个部分放入 map 中。我有一个功能可以检查它们是否适合 map 。

然而,如果 map 太小,递归应该停止并返回 (0),但事实并非如此。我在返回之前放了一个 printf("DONE") ,终端打印了它,但函数仍在运行。这怎么可能? DONE is printed several time even if return (0) is below

int fillit_algo (t_fill *orilst, t_map *map) {

int i;
int j;

i = 0;
j = 0;

if (orilst == NULL)
return (1);

while (map->map[i] != 0)
{
while (map->map[i][j])
{
if (fill_map(map, orilst, i, j))
{
if((fillit_algo(orilst->next, map)))
return (1);
}
j++;
}
j = 0;
i++;
}
printf ("DONE\n");

return (0);
}

最佳答案

if((fillit_algo(orilst->next, map)))
return (1);

如果 fillit_algo 在调用后返回 0,则可以打印多个“DONE”语句。因此,请在您的代码中处理“返回 0”的情况。

例子:

 if((fillit_algo(orilst->next, map)))
return (1);
else
return 0;

关于c - 为什么我的递归函数即使到了return(0)也不会停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53336732/

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