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;
}
在递归方法中,我们将不得不设置一些基本情况。我们可以将这些基本情况定义为该方法的基本操作吗?据我所知,基本操作是方法的核心功能,这意味着每次方法 运行 都必须通过这些功能。 (如有错误请指出)
另一个问题是我是否在基本情况下得到一个 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;
}