【发布时间】:2017-11-23 15:34:57
【问题描述】:
我制作了汽车的链接列表。 我正在尝试做一个递归函数搜索。 这就是我所做的。 由于某种原因,这不起作用。请你解释一下为什么以及如何解决它?
CarroPtr Search(CarroPtr head,int num)
{
printf("Matricula %d\n", num);
if (head == NULL)
{
return NULL;
}
if (head->matricula == num)
{
return head->nome;
}
else
{
head = head->next;
}
Search(head, num);
}
【问题讨论】:
-
查看底部的
Search调用。提示:它返回了一些东西,但你忽略了那个结果。很可能它的调用者对该返回值感兴趣,即使调用者本身就是通过递归。 -
你并不总是从你的函数中返回一个值——你应该这样做。
-
这段代码是 UB,因为它退出了声明为非 void 的函数
-
什么是
head->nome?它应该是CarroPtr,但它看起来更像是一个名字。您可能应该使用return head;而不是return head->nome;。else有点多余,因为if会无条件返回。递归调用也是else代码的一部分(仅在执行else代码时才会执行)——即使它不在else块中。 -
我解决了这个问题,返回的错误。谢谢
标签: c search recursion linked-list singly-linked-list