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

Java How to define a fundamental operation in a recursive method?

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

另一个问题是我是否在基本情况下得到一个 if 语句,例如,

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

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

这很混乱。

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

递归方法()

基本情况:

XXXXXXX XXXXXXX XXXXXXX

递归情况:

// 我应该把这部分移到基本情况吗?

if(conditions){

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

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

    else if(conditions){

         do something;

    return Recursive method();

因为我认为基本情况只是用来定义满足条件时的精确值。因此我把这部分留在递归的情况下。我只是不太确定。

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

谢谢。

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

基本操作 的定义从这个问题来看有点不清楚,老实说,我在这里迷路了。但是根据我的理解,它是或者应该是一组在函数中完成的操作,而不管基本情况。 Link对定义有帮助!

让我们举一个简短的例子:

/**
 * 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。因此,这是该方法唯一的基本操作。 (根据定义,对条件的评估可能会也可能不会被视为操作,因为它不会更改任何值,也不会产生任何副作用,例如打印。)

Can we define these base cases as the fundamental operations of the method?

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

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

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