是的,我知道措辞很难理解,但是这是让我感到很困扰的东西。在最近的一个项目中,我有一个递归的函数,并且有很多条件会导致它停止递归(目前为三)。哪种情况是可选的? (I.E.最佳性能或最简单的维护)。有条件地执行一个函数的最好方法是什么?
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)你就错了小白,任何理智的算法将永远使用递归。
第一个例子等同于在第二个例子中使用||,所以二者不会相同。 – 2009-09-17 20:56:29
@Lasse - 咦?如果这让你感到困惑,我也会否定条件。 – MiffTheFox 2009-09-17 21:01:12