java - 每次我运行这个递归算法时,我的变量都设置为 0 如何解决它

标签 java variables recursion reset

我编写了一个算法来计算获得该数字所需的操作数量。但每次递归函数发生时,“temp”变量都会重置为0。

如何解决每次都不会重置并且包含计数值的问题?

public static int minOps(int x, int y) {
    int temp = 0;
    if (y <= x)
        return temp;
    if (y / 2 > x) {
        temp++;
        return minOps(x, y / 2);
    } else {
        minOps(x, y - 1);
        temp++;
    }
    return temp;
}

最佳答案

通过完全消除 temp(您不需要它)。就像,

public static int minOps(int x, int y) {
    if (y <= x) {
        return 0;
    }
    if (y / 2 > x) {
        return 1 + minOps(x, y / 2);
    }
    return 1 + minOps(x, y - 1);
}

并使用大括号,即使它们是可选的。

关于java - 每次我运行这个递归算法时,我的变量都设置为 0 如何解决它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56083744/

相关文章:

javascript - 无法更改函数内的全局变量(JavaScript)

Javascript 作用域和递归

java - 解析包含 xi :includes with jaxb 的 xml 时遇到问题

c# - 变量改变...另一个变量?

java - 有没有更好的方法将此时间戳格式化为 ISO8601?

c# - 在类之间发送值的正确方法

java - 使用 Jackson 和 Hibernate 的多对多无限递归

c++ - 使用双端队列和递归 C++ 创建所有可能的组合

java - 如何为数组中的每个对象创建一个数组?

java - 在序列中查找缺失数字的逻辑是什么?