改进了计算余数的递归
improve recursion for calculating remainder
我必须编写一个代码来以某种方式计算余数。我知道有更好的方法可以做到这一点,但这就是我必须继续的方式。
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中,您可以通过以下方式执行此操作:
public static void main(String args[]) {
int remainder = remainder(3,2);
System.out.println(remainder);
}
static int remainder(int n1, int n2) {
int x;
x = n1;
if (x >= n2) {
x = x - n2;
remainder(x, n2);
}
return x;
}
注意:我没有在代码中添加条件来检查0。 希望这有帮助。
相关文章:
- 通过递归进行因子分解
- 递归函数计算序列中的平方和(并输出过程)
- 使用递归的数组的最小值.这是怎么回事
- 递归列出所有目录中的C++与Python与Ruby的性能
- 递归计数给定目录的文件和所有目录
- 如何在BST的这个简单递归实现中消除警告
- C++:正在检查LinkedList中的回文-递归方法-错误
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 递归无序映射
- TSP递归解的迭代形式
- 如何在Elixir中调用递归函数并行
- 返回递归调用和仅递归调用的区别
- 数组元素打印的递归方法
- 使用递归时获取变量的奇怪值
- 如何在C++中递归地按相反顺序打印集合
- 到连接组件算法的问题(递归)
- 如何使用递归打印修改后的星号三角形图案
- 使用递归模板动态分配的多维数组
- 递归函数有效,但无法记忆
- 改进了计算余数的递归