递归函数中有for循环调用递归,怎么优化,或改成非递归?有什么方法?
类似下面的递归函数如何改成非递归?C#问题。///////////////////////////////////////////////////////////////...
类似下面的递归函数如何改成非递归?C#问题。
///////////////////////////////////////////////////////////////////////////
List<Object> listObj = XXXXX;//其他处理已经给listObj初期化和赋值。
private void create(Object obj) {
foreach(Object tmpObj in listObj) {
if(条件1 == true) {
tmpObj设置值;
create(tmpObj);
}
}
}
//////////////////////////////////////////////////////////////////////////
现在这个递归处理效率很慢,有没有大神能指点迷津,怎么能提高效率?改成非递归。
本人试过堆栈队列,效率不行。 展开
///////////////////////////////////////////////////////////////////////////
List<Object> listObj = XXXXX;//其他处理已经给listObj初期化和赋值。
private void create(Object obj) {
foreach(Object tmpObj in listObj) {
if(条件1 == true) {
tmpObj设置值;
create(tmpObj);
}
}
}
//////////////////////////////////////////////////////////////////////////
现在这个递归处理效率很慢,有没有大神能指点迷津,怎么能提高效率?改成非递归。
本人试过堆栈队列,效率不行。 展开
2个回答
展开全部
这样看不太出来,create函数中是否对listObj做了修改呢
追问
对listObj进行修改了,应该算是引用传递
追答
单从你贴出来的这段代码来看,确实不好做什么有用的更改,比如不知道传递的参数如何使用的,不知道对listObj做了什么样的修改,你可以贴更详细的代码出来看看,不然只能建议你改成队列或者堆栈吧,应该会好一点,大多数情况下也只是一点,如果数据量大就有改的必要,小就算了.
你更应该从算法的角度去优化.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询