递归程序添加和减去一个数字

时间:2019-03-08 07:54:01

标签: java recursion

我想实现该程序,但是它会在每次函数调用时引发错误并运行无限循环。

class abc
{
    public static void main(String[] args) {
        int n=16;
        calll(n);
    }
    static int calll(int n)
    {
        if(n>0)
        {
            n=n-5;
            calll(n);
            return n;
        }
        else
        {
            n=n+5;
            calll(n);
            return n;
        }

    }
}  

1 个答案:

答案 0 :(得分:1)

您的功能没有结束条件。

是否n大于5,您将运行calll函数,然后再次运行calll函数至无穷大。

您需要一个可以结束递归的条件,例如,将调用函数更改为此:

static int calll(int n)
{
    if(n>0)
    {
        n=n-5;
        calll(n);
        return n;
    }
    else
    {
        return n;
    }

}

但是,该函数仍然毫无意义,因为您实际上并不对n进行任何操作。请记住,您在主函数中定义的n永远不会被修改。