在不使用循环的情况下搜索 int 数组中的数字组
Search group of numbers in int array without using a loop
我有以下数组
int[] a = { 4, 5, 6, 5, 4, 3 };
我想在数组中搜索平面序列,
return 数组中最长的平面序列。
对于这个数组,答案是 3 (5,6,5)
有没有不用循环的方法?
从技术上讲,您可以使用递归,但这并没有真正摆脱循环。你只是不写关键字 while
或 for
public static void main(String[] args) {
int[] a = { 4, 5, 6, 5, 4, 3 };
System.out.println(sequenceRecursive(a, 0, 0, 0));
}
public static int sequenceRecursive(int[] arr, int startIndex, int longest, int sequence) {
if(startIndex <= 0) startIndex = 1;
if(startIndex >= arr.length) return longest + 1;
if(arr[startIndex] > arr[startIndex - 1]){
sequence++;
if(sequence > longest) longest = sequence;
}else{
sequence = 0;
}
return sequenceRecursive(arr, ++startIndex, longest, sequence);
}
我有以下数组
int[] a = { 4, 5, 6, 5, 4, 3 };
我想在数组中搜索平面序列, return 数组中最长的平面序列。
对于这个数组,答案是 3 (5,6,5)
有没有不用循环的方法?
从技术上讲,您可以使用递归,但这并没有真正摆脱循环。你只是不写关键字 while
或 for
public static void main(String[] args) {
int[] a = { 4, 5, 6, 5, 4, 3 };
System.out.println(sequenceRecursive(a, 0, 0, 0));
}
public static int sequenceRecursive(int[] arr, int startIndex, int longest, int sequence) {
if(startIndex <= 0) startIndex = 1;
if(startIndex >= arr.length) return longest + 1;
if(arr[startIndex] > arr[startIndex - 1]){
sequence++;
if(sequence > longest) longest = sequence;
}else{
sequence = 0;
}
return sequenceRecursive(arr, ++startIndex, longest, sequence);
}