转换递归函数
Converting Recursive Function
我在这里具有递归函数,但是它会导致溢出错误,因此我需要将其更改为非收回函数。关于如何做的任何帮助将不胜感激!
void MergeSort(struct node** headRef)
{
node* head = *headRef;
node* a;
node* b;
if ((head == NULL) || (head->next == NULL))
{
return;
}
FrontBackSplit(head, &a, &b);
MergeSort(&a);
MergeSort(&b);
*headRef = SortedMerge(a, b);
}
通常,如果您具有溢出堆栈的树回收功能,这是一种直接的方法,将其转换为非收集者(而不是使用堆)是基本上分配的您自己的堆栈。
每当您的函数都会用一些参数调用自己时,而是将这些参数塞入struct
中,然后将struct
推入工作队列(我说"队列",但实际数据结构可以是std::stack
或std::queue
无论您是要以LIFO或FIFO订单处理项目)。现在,您可以在迭代循环中调用您的函数:迭代该队列直到空为空,弹出每组参数并使用它们调用您的功能(这可以在工作队列中添加新项目)。
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何在Elixir中调用递归函数并行
- 递归函数有效,但无法记忆
- 使用递归函数 (c++) 将长字符串转换为整数时输出错误
- 如何将递归函数(具有两个基本情况)转换为迭代函数
- 将递归函数转换为迭代函数
- 转换递归函数
- Python 3.3 如何将这个递归函数转换为纯收益循环版本?
- 将这个糟糕但功能强大的代码转换为递归函数
- 在turbo c++中,可以将一个普通递归函数转换为尾递归函数来对其进行优化
- 将迭代函数转换为递归函数
- 将迭代函数转换为递归函数
- 如何从递归函数返回指针,该函数将抛光表示法转换为反向抛光表示法
- 递归函数的转换
- 转换递归函数并使其迭代
- 将递归函数转换为尾递归函数
- 将迭代函数转换为递归函数
- C++ |需要帮助从 for 循环函数转换 - >递归函数
- 这个递归函数是如何自动转换成迭代函数的
- 在递归函数中,c++基转换过程中意外输出到屏幕