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