gpt4 book ai didi

c# - 有条件地执行功能的最佳方式?

转载 作者:行者123 更新时间:2023-11-30 19:04:03 26 4
gpt4 key购买 nike

是的,我知道措辞很难理解,但这让我很烦恼。在最近的一个项目中,我有一个递归的函数,并且有许多条件会导致它停止递归(目前是三个)。哪些情况是可选的? (即最佳性能或最简单的维护)。

1) 条件返回:

void myRecursingFunction (int i, int j){
if (conditionThatWouldStopRecursing) return;
if (anotherConditionThatWouldStopRecursing) return;
if (thirdConditionThatWouldStopRecursing) return;

doSomeCodeHere();
myRecursingFunction(i + 1, j);
myRecursingFunction(i, j + 1);
}

2) 将整个事情包装在一个 if 语句中

void myRecursingFunction (int i, int j){
if (
!conditionThatWouldStopRecursing &&
!anotherConditionThatWouldStopRecursing &&
!thirdConditionThatWouldStopRecursing
){
doSomeCodeHere();
myRecursingFunction(i + 1, j);
myRecursingFunction(i, j + 1);
}
}

3) 菜鸟,你做错了,理智的算法永远不会使用递归。

最佳答案

这两种方法应该在幕后产生相同的 IL 代码,因为它们是等效的 bool 表达式。请注意,每个终止条件都将按照您编写的顺序进行评估(因为编译器无法判断哪个最有可能),因此您需要将最常见的终止条件放在首位。

尽管structured programming指示第二种方法更好,我个人更喜欢将返回条件编码为递归方法顶部的单独 block 。我发现它更易于阅读和遵循(尽管我不喜欢在方法体的随机区域返回)。

关于c# - 有条件地执行功能的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1441268/

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