java - 改进计算余数的递归

标签 java c++ c algorithm recursion

我必须编写一段代码来使用某种方式计算余数。我知道有更好的方法可以做到这一点,但这就是我必须继续的方式。

if (rem(x - 1, y) + 1 == y) 正在进行额外的调用。因为它每次在到达最后一个返回之前都会进入那里,但这对我的算法来说是重要的一步。我想知道是否有什么办法可以避免它。

此外,我知道我必须检查 if y == 0; 我现在只是想提高性能。

谢谢

int rem(int x, int y) 
{
    if (x == 0) 
    {
        return 0;
    }
    if (rem(x - 1, y) + 1 == y) 
    {
        return 0;
    }
    return rem((x - 1), y) + 1;
}

我收到 9 次 rem(3/2) 递归调用

最佳答案

当然,这就是你可以让它变得更好的方法。

int rem(int x, int y) {

    if (x == 0) {
        return 0;
    }

    int ret = rem(x - 1, y);

    if (ret + 1 == y) {
        return 0;
    }

    return ret + 1;
}

我们只需调用该函数一次并将其输出存储在变量中。

关于java - 改进计算余数的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58497628/

相关文章:

c++ - 关闭 session 后 Tensorflow 1.8 内存仍保留在 GPU 上

c++ - 允许转换为 void(不是指针),为什么?

c - fgetc() : Is it enough to just check EOF?

java - 检查 Jira 中是否存在问题列表

java - 使用Java Loop for ArrayList每次打印

java - 这段代码在计算 URL 文件大小时是否存在某种瓶颈?

java - ArrayList 限制为 10 个值

c++ - Visual C++ 似乎无法解析链接头文件的路径

c - 如何加载作为 Struct[i] 成员的字符 []?

c - 3D数组中arr +1, *arr+1 , **arr+1 的含义