是的,我知道措辭很難理解,但是這是讓我感到很困擾的東西。在最近的一個項目中,我有一個遞歸的函數,並且有很多條件會導致它停止遞歸(目前爲三)。哪種情況是可選的? (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