Java如何在递归方法中定义基本操作?

时间:2015-11-16 19:32:52

标签: java recursion conceptual

在递归方法中,我们必须设置一些基本情况。我们可以将这些基本案例定义为该方法的基本操作吗?据我所知,基本操作是该方法的核心功能,这意味着每次运行该方法都必须通过这些功能。 (如果我错了,请告诉我)

另一个问题是我是否在基本案例中得到了if语句,例如

if(a!= b&& b!= c){}

是否算作1或2个基本操作?因为它正在检查2部分内容:a!= b和b!= c在单个if语句中。

这很困惑。

还有一件事是:我不确定这种代码是否合适:

递归方法()

基本情况:

XXXXXXX XXXXXXX XXXXXXX

递归案例:

//我应该将此部分移动到基础案例吗?

if(conditions){

    return (Recursive method() || Recursive method());

// ********************************************* ***********

    else if(conditions){

         do something;

    return Recursive method();

因为我认为基本情况仅用于在满足条件时定义精确值。因此,我将此部分留在递归案例中。我对此不太确定。

我不是要求课程作业的答案,只是为了确保这个概念是否正确。所以我没有把我的算法放在这里。对不起,如果这让你无法理解我的问题。我会尽力解释。

感谢。

1 个答案:

答案 0 :(得分:0)

根据提供的定义,基本情况终止案例是一种停止递归调用的条件。

基本操作的定义在这个问题上有点不清楚,老实说我在这里迷路了。但是根据我的理解,它应该是一组在函数中完成的操作,无论基本情况。链接到定义会有所帮助!

我们举一个简短的例子:

/**
 * Let's assume the result is not obvious here regardless it's a nth triangular number.
 * Added there a System.out though.
 */
public void calc(int i) {
    System.out.println(i);

    if (i == 0)
        return 0;
    return i + calc(i - 1);
}

如何停止递归计算第一个条件if (i == 0)true的唯一情况。这意味着此条件代表基本情况。当i具有除零以外的任何其他值时,递归继续。

在该示例中,无论方法结果如何,唯一的操作是打印值i。因此,这是该方法的唯一基本操作。 (根据定义,对条件的评估可能也可能不被视为操作,因为它不会改变任何值,也不会产生任何副作用,例如打印。)

  

我们可以将这些基本案例定义为方法的基本操作吗?

一般不会,因为这些代表不同的情况。第一个定义了递归停止的情况,第二个定义了总是完成的情况。因此,如果将它们组合在一起,最终会得到一个始终停止递归的函数。

对于以下情况,它们可能是相同的。

public void calc(int i) {
    return i + 1;
}