小编omr*_*b40的帖子

将Array除以2个子数组,并检查乘法是否相等

我在Java练习考试.我今天面临的一个问题是:给定一个带有n个数字的数组,我需要检查是否有2个子数组(不必相等)它们的乘法等于 - 如果有,则返回true,否则为false.例如:如果数组为:{2,15,3,4,2,5} - 如果数组为:{2,4,6,2,3,4}将返回True - 将返回False.

答案必须是递归的,没有任何循环.

所以我认为如果有2个子数组,它们的乘法相等则意味着整个数组的总乘数必须是平方根数.例如,在第一个数组中,它是3600,即60.

到目前为止,我找不到任何不适用的情况,但仍然不能确定它将涵盖所有可能的情况.

这是我的代码:

    public static boolean splitEqualMult(int[] a) {
      double multi = isArrSqrt(a,0);

      if(Math.sqrt(multi) == Math.floor(Math.sqrt(multi))) {
          return true;
    }

    return false;
}

private static double isArrSqrt(int[] a, int i) {

    if(i == a.length) {
        return 1;
    }

    return a[i] * isArrSqrt(a,i+1);
}
Run Code Online (Sandbox Code Playgroud)

希望听到你的想法!

java recursion sqrt

6
推荐指数
1
解决办法
203
查看次数

递归问题 - 给定数组 n 和数字 k

给定一个数组大小 n 和一个正数 max(max 表示我们可以用来放置在数组中的数字的范围)。

我想计算我可以在数组中放置多少个排序数字组合。

例如 :

如果n = 3, max = 2.(我们可以使用的唯一数字是 1/2,因为最大值是 2)所以排序数组有 4 种组合

 1. {1,1,1}
 2. {1,1,2}
 3. {1,2,2}
 4. {2,2,2}
Run Code Online (Sandbox Code Playgroud)

我写了一些代码并成功通过了这个特定的例子,但max > 2没有返回正确答案的任何其他例子。

我发现的问题是当递归到达最后一个索引时,它不会尝试第三个数字,它只是折回。

我的代码:

private static int howManySorted(int n, int max, int index, int numToMax, int prevNum) {        
    // If the value is bigger then max return 0
    if(numToMax > max) {
        return 0;
    }
    if (numToMax < prevNum) {
        return 0;
    }
    //If Index reached the end of …
Run Code Online (Sandbox Code Playgroud)

java sorting recursion

5
推荐指数
1
解决办法
884
查看次数

标签 统计

java ×2

recursion ×2

sorting ×1

sqrt ×1