2016-04-24 91 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)); 
}