例如int[]arr={1,2,2,3,4,5};3只存在一次,方法应该返回true;2存在两次,方法应该返回false;0不存在,方法应该返回false。我不断得到一个运行时错误,我如何修复它,或者有没有任何方法到方法(仅递归)。下面是我的代码:
public static boolean list(int [] a, int num) {
return helper(a,0,num);
}
public static boolean helper(int [] a, int i, int num) {
int count = 0;
if(a[i] == num )
count++;
if(count == 1 && i == a.length )
return true;
else if(count != 1 && i == a.length)
return false;
else
return helper(a, i++, num);
}
我运行了您的代码,得到了一个java.lang.StackOverflowError。这表明名为helper
的递归方法一直在无限地调用自己。之所以这样做,是因为return
语句之前的if
语句中的条件都不为真。
当以下两个条件之一为真时,您不希望递归调用该方法:
如果您在每次调用方法helper
时都将count
初始化为零,那么它将永远不会大于1。因此,您应该使它成为helper
方法的参数。
您只需检查i
是否等于a.lengts
以确定是否已到达数组的末尾。
/**
* Determines whether 'num' occurs exactly once in 'a'.
*
* @param a - array to search
* @param count - number of occurrences of 'num' in 'a'
* @param i - index in 'a'
* @param num - number to search for
*
* @return 'true' if 'num' occurs exactly once in 'a', otherwise 'false'.
*/
public static boolean helper2(int[] a, int count, int i, int num) {
if (count > 1) {
return false;
}
if (i == a.length) {
return count == 1;
}
if (a[i] == num) {
count++;
}
return helper2(a, count, i + 1, num);
}
并且对该方法的初始调用是(例如,如果您正在检查数字3
是否只在
int[] a = new int[]{1, 2, 2, 3, 4, 5}; // array of integers to search
int count = 0; // number of occurrences
int index = 0; // index in 'a'
int num = 3; // number to search for
boolean single = helper2(a, count, index, num);
我试图使用递归编写一个方法subsetWithSum(ArrayList numbers,int sum),该方法获取整数的ArrayList和整数的和,并返回一个ArrayList,其中包含给定数字(提供的ArrayList)中的数字,这些数字的和等于和。不必返回多个组合,如果没有这样的子集,则应返回null。但我的代码只为每个返回null`` 这是我的方法代码: 下面是我对该方法的主要调用:
我试图解决这个问题:编写一个递归方法,返回作为int类型参数传递给它的整数中的位数。允许使用正参数和负参数。例如,-120有三个数字。 这是我的代码,但当我试图通过121时,我总是得到1:
问题内容: 我在node.js中编写一个函数来查询PostgreSQL表。 如果该行存在,我想从该行返回id列。 如果不存在,我想将其插入并返回ID()。 我一直在尝试和语句的变体,但似乎无法使其正常工作。 问题答案: 我建议在数据库端进行检查,然后将ID返回给nodejs。 例子: 而不是在Node.js端(在此示例中,我使用的是node-postgres):
问题内容: 我想将方法返回的数组存储到另一个数组中。我怎样才能做到这一点? 当我调用此方法时,如何将返回的数组(z)存储到另一个数组中? 问题答案: 上面的方法不返回数组本身,而是返回对该数组的引用。在调用函数中,您可以在另一个引用中收集此返回值,例如: 此后还将引用之前引用的同一数组。 如果这不是您想要的,并且要创建阵列的副本,则可以使用创建副本。
我需要一个递归函数,首先返回最深的项,因为反转数组和推到第一个位置很慢。 我有一个目标: 和一个递归函数: 我需要一个递归函数,它可以返回一个对象父id的数组,这样最后一个父id就位于返回数组的第一位。对于上面的例子,如果我将该对象传入我的函数,它应该返回父对象的id,如下所示: