public class Ques1{
public static int func(int i, int j, int ans, int[] arr){
if(j == arr.length-1){
return Math.max(ans,arr[j]);
}
if(i == arr.length-1){
return Math.max(ans,arr[i]);
}
int maxi = Math.max(ans,Math.max(arr[i],arr[j]));
System.out.println(maxi);
return func(i, j+1, maxi, arr);
}
public static void main(String[] args) {
int[] arr = {12,10,2,4,6,1,9,28};
int n = arr.length;
for(int i = 1; i < n-1; i++){
int ans = func(i-1, i, Integer.MIN_VALUE, arr);
}
}
}
在数组中的两个索引 i 和 j 之间找到子序列中的最大值时,最初在主函数和定义的函数“func”中 i=1,i=0 和 j=1 并继续,答案直到最后一步都是正确的,其中j的值是数组的长度-1。我试过调试,我面临的问题是当j的值增加到7时,数组的长度是8,因此,不是第一个“if”块继续执行,而是 j 的值递减回 0,最后一个 return 块执行,然后函数退出循环,i 从 i=2 开始。答案应该是 12, 12, 12, 12, 12, 12, 28,但最后的答案也是 12 而不是 28。
我面临的问题是当 j 的值增加到 7 时,数组的长度为 8,所以不是第一个“if”块继续,而是 j 的值递减回 0,最后一个 return 块执行,然后函数退出循环,i从i=2开始。答案应该是 12, 12, 12, 12, 12, 12, 28,但最后的答案也是 12 而不是 28。