当前位置: 首页 > 知识库问答 >
问题:

如何找到n个数字的HCF或GCF[已关闭]

鲜于凯康
2023-03-14

我对这个代码有问题。它应该找到三个数字的GCF,但它在else语句中不断出现错误。

public static int gcf(int b, int s, int n)
{
    if(b % s == 0 && n % s == 0)
    
            return s;
    
    else
    
        int d = b&s;
        return hcf(s, d, n);
    
        
    
}

共有1个答案

堵琨
2023-03-14

您的代码将无法编译,因为

else 
   int d = b & s; 
   return hcf(s, d, n); 

相当于

else {
   int d = b & s; 
}
return hcf(s, d, n); 

变量d在返回语句中超出范围。

以下做法应该行得通:

if (b % s == 0 && n % s == 0)
    return s;
else {
    int d = b % s;       // should be %, not &
    return gcf(s, d, n); // recursion
}
 类似资料:
  • 问题内容: 我想找到小于或等于n的第k个根的最大整数。我试过了 但是对于n = 125,k = 3,这给出了错误的答案!我碰巧知道5的立方是125。 有什么更好的算法? 背景:在2011年,这次滑坡使我击败了Google Code Jam。https://code.google.com/codejam/contest/dashboard?c=1150486#s=p2 问题答案: 一个解决方案首先通

  • IntStream可能是最简单的方法,但我只能获取最小的M数字,如下所示: 顺便说一句,考虑算法复杂性并假设N 我认为最好的复杂性可能达到O(N log(M)),但我不知道Java 8是否有这种流方法或收集器。

  • 我想找到小于或等于n的第k个根的最大整数 但是对于n=125,k=3,这给出了错误的答案!我碰巧知道5的立方是125 什么是更好的算法? 背景:2011年,这个失误让我打败了谷歌代码堵塞。https://code.google.com/codejam/contest/dashboard?c=1150486#s=p2

  • 我试图学习分布式计算,并遇到了一个寻找大量数字的中位数的问题: 假设我们有一大组数字(假设元素数为 N*K),它们无法放入内存(大小为 N)。我们如何找到这些数据的中位数?假设在内存上执行的操作是独立的,即我们可以考虑有K台机器,每台机器最多可以处理N个元素。 我认为中位数可以用于这个目的。我们可以一次将N个数装入内存。我们在< code>O(logN)时间内找到该集合的中值,并保存它。 然后我们

  • 这个问题是由打字错误或无法再复制的问题引起的。虽然这里可能有类似的问题,但这个问题的解决方式不太可能对未来的读者有所帮助。 我正在试图找到列表的中间值。我试过两种方法,但都不管用(我已经导入了我需要的东西,列表就在那里)。自拍是列表的名称 这就是错误 ret = umr_sum(arr, axis, dtype, out, keepdims) TypeError:无法对灵活类型执行reduce 另

  • 问题内容: 如何找到最多2个数字? 我需要比较两个值,即,并找到最大值2。我需要一些python函数来操作它吗? 问题答案: 使用内置功能。 示例: 返回4。 只是为了傻笑,还有一个……您是否需要它。:P