gpt4 book ai didi

algorithm - 递归算法 : suggested patterns and practices?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:08 26 4
gpt4 key购买 nike

我正在编写一个反射(reflect)两个对象图并返回一个值以指示图是否相同的实用程序。这让我开始思考,是否有一种普遍接受的模式来编写从递归中的某个位置返回值的递归算法?

我的解决方案可能会使用 ref 参数,看起来像这样的伪代码:

public static bool IsChanged(T current, T previous)
{
bool isChanged = false;
CheckChanged(current, previous, ref isChanged);
return isChanged ;
}


private static void CheckChanged(T current, T previous, ref isChanged)
{
//perform recursion
if (graphIsChanged)
isChanged = true;
else
CheckChanged(current, previous, ref isChanged);
}

是否有更好/更清洁/更高效的方法?这种功能有通用模式吗?

最佳答案

与这个非常简单的版本相比,我看不出您的版本有任何好处:

public static bool IsChanged(T current, T previous)
{
//perform recursion
if (graphIsChanged)
return true;
else
return IsChanged(current, previous);
}

作为一个额外的好处,一些编译器能够使用尾调用优化将这个版本变成一个更有效的简单循环。

关于algorithm - 递归算法 : suggested patterns and practices?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/940850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com