数组元素的递归总数等于目标java
我试图将数组中的元素相加,并检查总数是否等于目标值,在本例中为24。方法必须是递归的 这里是第一个需要私有助手方法的方法数组元素的递归总数等于目标java,java,arrays,recursion,Java,Arrays,Recursion,我试图将数组中的元素相加,并检查总数是否等于目标值,在本例中为24。方法必须是递归的 这里是第一个需要私有助手方法的方法 public boolean isSum24(int arr[]) { return isSum24(arr, 24); } 这就是我迄今为止所尝试的。总数不起作用。有什么建议吗 private boolean isSum24(int arr[], int targetSum) { int n = 1, total = 0; if(arr.l
public boolean isSum24(int arr[])
{
return isSum24(arr, 24);
}
这就是我迄今为止所尝试的。总数不起作用。有什么建议吗
private boolean isSum24(int arr[], int targetSum) {
int n = 1, total = 0;
if(arr.length <=0)
return false;
if(n > arr.length)
//break;
total = arr[n] + isSum24(arr, targetSum);
//total = arr[n]+ isSum24(arr[n-1], n-1);
if(total == targetSum)
return true;
return false; //change this line of code as needed.
}
private boolean isSum24(int arr[],int targetSum){
int n=1,总计=0;
if(arr.length arr.length)
//中断;
总计=arr[n]+isSum24(arr,targetSum);
//总计=arr[n]+ISUM24(arr[n-1],n-1);
如果(总计==targetSum)
返回true;
return false;//根据需要更改这行代码。
}
@Gustavo这是你可以做的事情:
递归需要:
- 基本情况
- 诱导步骤
total=arr[n]+isSum24(arr,targetSum)代码>
您正在isSum24(arr,targetSum)中运行相同的函数代码>,导致无限循环(或者这就是应该发生的事情)
您应该从数组中删除arr[n]
,或者使用Arrays.copyOfRange(array,start,stop)
制作副本。希望这有帮助
此外,还需要在内部方法中更改targetSum
public boolean isSum24(int arr[])
{
return isSum24(arr, 24);
}
这将是我的代码,如果你真的需要它
private boolean isSum24(int arr[], int targetSum) {
if(arr.length == 1){
return arr[0] = targetSum; //base case
}
return isSum24(Arrays.copyOfRange(arr, 1, arr.length), targetSum - arr[0]); //induction step
}
有人能更好地格式化我的代码
第一个帖子。向帖子评论问题。谢谢。如果我们以非递归方式实现该问题-
private static boolean sum(int[] array, int sum){
int total = 0;
for(int i=0;i<array.length;i++){
total += array[i];
}
return total == sum;
}
问题是什么?它不起作用,我合计的行不起作用。我认为您应该递归地计算数组的和,然后将结果与给定的数字进行比较。boolean isSum24(int[],int)
不返回数字。因此,行total=arr[n]+isSum24(arr,targetSum)代码>对我来说没有任何意义。什么是2+true
?感谢您的指导,这解释了为什么返回不起作用。我只想将两个参数传递到private helper方法中,只返回(arr[],target)。