Java 每个子阵列的中间值
以下错误显示: 在圆括号处.check.printcombination(check.java:51) 在圆括号处.check.printcombination(check.java:58) 我的第51行和第56行在下面的代码中有注释Java 每个子阵列的中间值,java,recursion,Java,Recursion,以下错误显示: 在圆括号处.check.printcombination(check.java:51) 在圆括号处.check.printcombination(check.java:58) 我的第51行和第56行在下面的代码中有注释 package parenthesis; import java.util.*; public class check { public static void main(String args[]) { int arr[] = {
package parenthesis;
import java.util.*;
public class check {
public static void main(String args[]) {
int arr[] = { 12, 13, 14, 15, 16, 17, 18, 19 };
function(arr, 0, 7);
}
public static void function(int arr[], int start, int end) {
int mid;
mid = (start + end) / 2;
printcombination(arr, start, end, mid);
}
public static void printcombination(int arr[], int start, int end, int mid) {
System.out.print(arr[mid] + " "); //// error
if ((start == mid) && (mid == end)) {
return;
}
printcombination(arr, start, mid - 1, (start + mid - 1) / 2); //// error
printcombination(arr, mid + 1, end, (mid + 1 + end) / 2);
}
}
尝试或代替and:
如果((start==mid)| |(mid==end))
第34行出现错误的递归(“printcombination(arr,start,mid-1,(start+mid-1)/2);///error”),这里会抛出StackOverflower错误。
“printcombination”方法的递归流程为:
start=0,mid=3,end=7,调用“打印组合(arr,start,mid-1,(start+mid-1)/2”
start=0,mid=1,end=2,调用“打印组合(arr,start,mid-1,(start+mid-1)/2”
开始=0,中间=0,结束=0,返回
开始=0,中间=1,结束=2,调用“打印组合(arr,中间+1,结束,(中间+1+结束)/2”
开始=0,中间=3,结束=7,调用打印组合(arr,中间+1,结束,(中间+1+结束)/2)
start=4,mid=5,end=7,调用“打印组合(arr,start,mid-1,(start+mid-1)/2”
开始=4,中间=4,结束=4,返回
开始=4,中间=5,结束=7,调用“打印组合(arr,中间+1,结束,(中间+1+结束)/2”
start=6,mid=6,end=7,调用“打印组合(arr,start,mid-1,(start+mid-1)/2”
start=6,mid=5,end=5,调用“打印组合(arr,start,mid-1,(start+mid-1)/2”
start=6,mid=5,end=4,调用“打印组合(arr,start,mid-1,(start+mid-1)/2”
start=6,mid=5,end=4,调用“打印组合(arr,start,mid-1,(start+mid-1)/2”
…您是否正在尝试实现某种二进制函数?RU试图做什么。如果您这样说,我们可以提供更好的帮助。错误的其余部分是什么?您是否尝试过调试?另外,格式化代码以使其更易于阅读。看起来您在检查二进制函数变体中递归调用的边界方面遇到了问题搜索功能?您可能想添加这些行上发生的错误,也不清楚为什么在58处提到错误,在56处提到注释。这似乎是一个课程作业。