问题描述
- 数组倒置的递归算法 不知道哪出错了
-
public class ReverseArray {
public static void main(String[] args) {
//定义数组
int a[] = {2,3,4,5,6};reverse(a,0,a.length-1); //遍历输出 for(int i = 0;i < a.length;i++) { System.out.print(a[i]); } } //做递归 public static void reverse(int a[],int i,int j) { if(j > i) { Swap(a,a[i],a[j]); reverse(a,i+1,j-1); } } //数组中两个数交换 private static void Swap(int a[],int l,int k) { // TODO Auto-generated method stub int temp = a[l]; a[l] = a[k]; a[k] = temp; }
}
输出 数组越界 望大家教教
解决方案
Swap 的第二和第三个参数,需要下标,但上面代码中传入的是成员,这样会导致访问越界。
解决方案二:
//做递归** 应该是按下标啊,也不是 ,a[i],a[j]**。
public static void reverse(int a[],int i,int j) {
if(j > i) {
Swap(a,a[i],a[j]);
reverse(a,i+1,j-1);
}
}
时间: 2024-11-01 21:32:50