java - 递归程序来加减一个数

标签 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;
        }

    }
}  

最佳答案

您的函数没有结束条件。

无论 n 是否大于 5,您都会运行 calll 函数,然后该函数会再次运行 calll 函数直至无穷大。

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

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

}

但是这个函数仍然毫无意义,因为你实际上并没有对 n 做任何事情。请记住,您在 main 函数中定义的 n 永远不会被修改。

关于java - 递归程序来加减一个数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55058886/

相关文章:

java - Spring WebFlux 和 Reactor 的线程模型

java - Alfresco - 在工作流程中获取用户名

java - 跳过递归中不需要的返回

java - 如何找到矩阵中的最佳位置?

javascript - 我无法在处理递归时返回实际变量?

java - 使用递归来确定位数

java - 测试类中没有可以由可用注入(inject)满足的构造函数

java - 在 Java (Android) 中创建内存中的 sqlite 数据库的示例?

Java - 对于数组,删除偶数

Java递归问题: Minesweeper