提问人:Me at Work 提问时间:10/8/2023 最后编辑:Vlad from MoscowMe at Work 更新时间:10/8/2023 访问量:94
为什么我们在递归函数中使用 return?[复制]
Why did we use return here in Recursive Function? [duplicate]
问:
为什么我们在双倍链表讲座的这段代码中使用 return ?当我运行代码时,递归是在不写返回kw的情况下发生的,那为什么我们需要它呢?
Node* reverseusingRecursion(Node* &prev,Node* &curr){
//*base condition
if (curr==NULL)
{
//*LL has been reversed
return prev;
}
//* 1 case solve rest will be taken care by recursion function(This is the basic escence of a recursive function)
Node* forward=curr->next;
curr->next=prev;
prev=curr;
curr=forward;
return reverseusingRecursion(prev,curr);
}
我已经编写了代码,而没有在 * return reverseusingRecursion(prev,curr);* 中使用 return,它工作正常。 那为什么我们需要输入return呢?
答:
-1赞
Vlad from Moscow
10/8/2023
#1
该函数必须返回指向反向列表的新头节点的指针。指向新头节点的指针是在函数的最后一次递归调用中获取的。因此,函数的所有先前递归调用都必须返回在函数的最后一次递归调用中获取和返回的指针。如果没有 return 语句,则返回的指针是未定义的。
如果由于生成的目标代码,函数将指针放在编译器用来从函数返回值的寄存器中,则该函数可能会意外地按预期工作。但这并不能保证。prev
您始终必须编写有效的 C 代码,并且不要依赖编译器生成的目标代码。
评论
reverseusingRecursion
Node*
return
NULL
nullptr
void
return