我正在写一个方法,用递归实现冒泡排序,我的基本情况是"数组的长度",在这种情况下,我必须递归调用函数从"0"到array.length-1
,但是,当我浏览其他人的代码时,我发现他们都使用基本情况"1",也就是从array.length
到"1"的递归。我知道我们的两个递归运行了相同的次数,得到了相同的结果,但我有点困惑,这是否意味着我对递归的理解是错误的?
我代码:
public static void bubbleRecursion(int arr[],int n){
if (n==arr.length){
System.out.println(Arrays.toString(arr));
return;
}
for (int i = 0;i<arr.length-1-n;i++){
if (arr[i]>arr[i+1]){
int temp;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
bubbleRecursion(arr, n+1);
}
bubbleRecursion(array,0);
其他人的代码:
public static void sortingRecursion(int[] arr, int n){
if (n == 1){
return;
}
for (int i = 0;i < n-1;i++){
if (arr[i]>arr[i+1]){
int temp;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
sortingRecursion(arr, n-1);
}
sortingRecursion(array, array.length);
然后我查了一下递归的定义,似乎每次输入都应该越来越小,但是我的代码每次都增加n的值,所以现在我有点困惑,这是否意味着我的代码是一个错误的答案,尽管输出是正确的?
有人能帮我吗?谢谢
1条答案
按热度按时间xvw2m8pv1#
您的基本案例应为
if (n == 0) return;
解决方案
用法
输出
已编辑