分析已将此函数指向性能降级,因为递归潜深很深
Func(unsigned eff_id)
{
if (eff_id == 0) return 1;
if (eff_id == 1) return 0;
XCodeRuleNode rn(m_IH_rn_ri.get_key(eff_id)); // Initialize
{
rn.t_id = Func(rn.t_id);
rn.f_id = Func(rn.f_id);
//
}
return RegCodeRuleNode(rn); // Inserting the object in a hash table
}
答案 0 :(得分:4)
回答你的问题:是的,它可以被转换(另见Can every recursion be converted into iteration?)。
但是:递归本身(如果有的话,在示例中没有显式的递归)可能不是降级器,而是递归的深度,或者在“循环 - 术语”中迭代的次数,所以只需要替换通过迭代递归可能无法解决您的问题,您可能不得不寻找其他解决方案(例如,记忆,查找表,使用其他公式或算法,甚至多线程;这里有太多可能的优化来命名它们)。
旁注:您的评论似乎已过时,在return RegCodeRuleNode(rn); // Inserting the object in a hash table
,我没有看到任何插入内容