什么是「;“递归条件”;这段代码(Java中的递归)

什么是「;“递归条件”;这段代码(Java中的递归),java,recursion,Java,Recursion,我正在研究这个问题,我不明白解决办法 该问题的屏幕截图位于并在此处引用: 假设参数n为非负,那么递归 方法的条件(允许调用递归方法) 神秘 最初我认为解决方案应该是n>0;但我被告知正确的解决方案是n>=2 为什么n>=2被认为是正确的解决方案而不是n>0?只有当有多个元素需要处理时才需要递归。 如果有一个或零个元素,则返回。您的mymestry函数似乎是多个n和m,当然,您可以从1开始,而不是从2开始,并将函数更改为: public int mymestry (int n, int m) {

我正在研究这个问题,我不明白解决办法

该问题的屏幕截图位于并在此处引用:

假设参数
n
为非负,那么递归 方法的条件(允许调用递归方法)
神秘

最初我认为解决方案应该是
n>0
;但我被告知正确的解决方案是
n>=2


为什么
n>=2
被认为是正确的解决方案而不是
n>0

只有当有多个元素需要处理时才需要递归。
如果有一个或零个元素,则返回。

您的
mymestry
函数似乎是多个
n
m
,当然,您可以从1开始,而不是从2开始,并将函数更改为:

public int mymestry (int n, int m)
{
    if(n==0)
        return 0;
    return m + mymestry(n-1, m);
}

编写此代码的人,请考虑<代码> M* 1 一个微不足道的倍数,并返回其值而不是计算它。

< P>基于您使用的术语:

“递归条件”是函数将递归调用自身以减少问题域的一组情况。发生这种情况时,会向堆栈中添加一个新的函数调用,并且调用会“更深入”

“停止条件”是函数将直接提供答案(将反馈到任何调用函数)的一组情况。当这种情况发生时,先前添加到堆栈中的函数调用将接收应答,并反过来向其调用函数提供应答。换句话说,堆栈正在“展开”或“变小”


根据提供的代码,如果
n==0
n==1
,则不会发生递归。因此,
n>0
不一定满足该条件
n>=2
将导致递归调用函数,因此它表示“递归条件”

问题出在哪里?我在code@MaxZoom当
n
为1或0时,我返回递归条件是什么意思?你是说
n
的哪个值会导致递归调用?@Pshemo是的,解决方案是n>=2,我不明白为什么?
public int mymestry (int n, int m)
{
    if(n==0)
        return 0;
    return m + mymestry(n-1, m);
}