【发布时间】:2017-01-29 09:58:43
【问题描述】:
我最近完成了一个程序,用于检查用户输入的 int 数组是否按升序排列。我的函数 isAsc 在这里:
public static boolean isAsc(int[] arr, int index){
if (index==1 || arr.length==1){
return true; //Base case
}
else if (arr[index-2] >= arr[index-1]){
return false;
}
else
return isAsc(arr, index-1); //recursive step
}
而且逻辑似乎是正确的。但是,我没有得到的是当我调用函数时:System.out.print(isAsc(arr, arrayLength-1));
输出错误。这个System.out.print(isAsc(arr, arrayLength));
得出正确答案。为什么?谢谢!
【问题讨论】:
-
你看到的输出是什么?你用的是什么数组?
-
当有重复的数字时,您的逻辑会返回 false,即使它们被正确排序(相邻)。将
>=更改为>。 -
@Malvolio 1 2 4 3 它返回真。无论如何,我现在明白了,谢谢
-
@Bohemian,是的,我做到了。
-
@PaulStevenFantonalgoNadera -- 你的错误很常见,它有its own Wikipedia page。