gpt4 book ai didi

performance - 设计算法时如何避免嵌套的IF条件

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

对于具有多个 IF 条件的算法,我有以下伪代码。如何通过一些检查或更有效的方式避免此类嵌套。

If (there does not exist a house) then

if (road ==1) then do something

if (road ==2) then do something

if (road ==3) then do something

end if end if end if end if

If (road ==4) AND (there exist a house) then do something end if

最佳答案

我可能更关心可读性而不是效率,除非您分析了您的代码并发现它是一个瓶颈。

为了可读性,您可以使用一组实现通用接口(interface)的类。在伪代码中,给定此接口(interface):

interface Callback
{
void DoJob()
}

以及实现接口(interface)的各种类:

class DoThing1 implements Callback { public void DoJob() { .. } }
class DoThing2 implements Callback { public void DoJob() { .. } }

然后在你的主代码中有一个包含这些回调的数组:

Callback m_roadHandlers[MAX_HANDLERS]

然后这样调用它们:

if (house and road == 4)
m_roadHandlers[road].DoJob();
else if (no house and road >= 1 and road <= 3)
m_roadHandlers[road].DoJob();

你标记了 Java,所以我如上图所示,因为 Java(还)没有方法回调的概念,所以据我所知你不能传入方法(自从我使用 Java 以来已经有一段时间了),因此您可能必须将类传递给回调。在 C# 中,您可以在同一个类中使用委托(delegate)和传入方法。

关于performance - 设计算法时如何避免嵌套的IF条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26519619/

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