2016-04-24 90 views
-2

在遞歸中如何識別計算應在遞歸調用之前或遞歸調用之後完成?遞歸瞭解

// code for calculation and then recursion call 
boolean xyz() 
{ 
    x = xyz(); 

    if(x ==c ondition) 
     return true; 
} 

// Code for recursion call then calculation 
boolean xyz() 
{ 
    if(x == condition) 
     return true; 

    xyz(); 
} 

在許多樹問題,我觀察到了這種情況,但無法理解它是如何工作以及何時使用什麼請提供建議

+0

對不起什麼? –

+0

我想問很多次,我們有遞歸調用函數後的前置條件或後置條件檢查,所以它有什麼不同。 –

+0

這完全取決於算法?我不明白這一般如何回答。這就像問你離開前在家裏吃早餐和到你辦公桌前吃早餐有什麼區別。就像,這取決於一百萬件事情。 –

回答

1

我覺得基本結構爲:「如果我們已經達到了底部回報的基本價值,否則就會更深入。「

void xyz() 
{ 
    if(x==condition) 
    { 
     return some_base_value; 
    } 
    else 
    { 
     return xyz(); 
    } 
} 

這裏是一個典型的階乘函數的例子:

long factorial(int n) 
{ 
    if (n == 0) 
    return 1; 
    else 
    return(n * factorial(n-1)); 
}