我在我的 c# asp.net 程序中使用递归函数,它抛出“StackOverflow 异常”。当我在 IIS 中运行我的程序时会引发此异常。
如果我使用循环而不是递归函数,它会抛出“StackOverflow Exception”吗?
在这种异常的情况下,使用循环或递归哪个好?
编辑:
分析问题后发现异常是因为递归层级超过1000,导致栈溢出。
现在,由于使用了多重递归,我完全迷失了将递归函数转换为迭代的过程。我在此处发布示例代码以供参考:
RecursiveFunction(Node n) {
//Some Code for local variables
node.processed=true;
if(n.up){
//Create a sub node for node below the current one
if(!subnode.processed)
RecursiveFunction(subnode);
}
else{
//Create a sub node for node above current one
if(!subnode.processed)
RecursiveFunction(subnode);
}
return result;
}
注意:上面的示例代码可能是一个无限循环,因为我只是用它来提到使用了多个递归,它的实际实现不是无限循环。
在这种情况下,基本条件是,如果一个节点已经被处理,它将不使用递归并直接返回结果。
我的问题是,如果使用多个递归,我该如何用迭代替换它。我用谷歌搜索并发现了许多用迭代或库存替换递归的建议。但我没有找到任何关于用迭代替换多重递归的信息。