2 qq 30151545 qq_30151545 于 2016.01.25 15:02 提问

数组倒置的递归算法 不知道哪出错了

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;

}

}

输出 数组越界 望大家教教

2个回答

91program
91program   Ds   Rxr 2016.01.25 15:26
已采纳

Swap 的第二和第三个参数,需要下标,但上面代码中传入的是成员,这样会导致访问越界。

91program
91program   Ds   Rxr 2016.01.25 15:08

//做递归** 应该是按下标啊,也不是 ,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);
}
}

91program
91program 回复91program: 实在不好意思,两次搞错了。Swap 的第二和第三个参数,需要下标,但上面代码中传入的是成员,这样会导致访问越界。
2 年多之前 回复
91program
91program 不好意思,搞错了。Swap 交换,需要使用指针,而不是元素。否则,形表交换了,但实参并没有交换。
2 年多之前 回复
qq_30151545
qq_30151545 想问下要怎么改
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
算法提高 递归倒置字符数组
问题描述   完成一个递归程序,倒置字符数组。并打印实现过程   递归逻辑为:   当字符长度等于1时,直接返回   否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分 输入格式   字符数组长度及该数组 输出格式   在求解过程中,打印字符数组的变化情况。   最后空一行,在程序结尾处打印倒置后该数组的各个元素。 样例输入 Sample 1 5
java递归求和、倒置算法
递归算法是一种直接或者间接地调用自身算法的过程。它往往使算法的描述简洁而且易于理解。 递归算法解决问题的特点: (1)递归就是在过程或函数里调用自身。 (2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 (3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。 (4)在递归调用的过程当中系统为每一
用递归颠倒一个数组
import java.util.Arrays;/** * 用递归颠倒一个数组。 *  * @author 孙钰佳,http://blog.csdn.net/sunyujia/ *  */public class T {  public static void main(String args[]) {    int[] a = { 1, 2, 3, 4, 5 };    reverse(a, 0
数组求和算法(线性递归版、二分递归版)、数组倒置(多递归基递归版)
问题描述:              编写一个简单的用递归求一个数组的和。 // 递归实现数组求和 #include int sum(int A[], int n) { if (n < 1) //递归出口 return 0; //下标为0 else return sum(A,n-1) + A[n-1]; } int main() { int n = 3;
用递归实现字符串倒置
public static String reverse(String str) { if ((null == str) || (str.length() <= 1)) { return str; } return reverse(str.substring(1)) + str.charAt(0); } 比如输入一
代码哪出错了呢????
这个出来怎么什么效果都没有呀??????图片也不是透明的怎么回事呀???郁闷 import java.io.IOException; import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image;
忘了配置哪出的错了
Unable to find a javac compiler;com.sun.tools.javac.Main is not onthe classpath.Perhaps JAVA_HOME does not point to theJDK后来上网找到了解决方案:只要把JAVA_HOME/lib/tools.jar拷到TOMCAT_HOME/common/lib下,重启动Tomcat,就可以了
并查集不知道哪里出错了
package com.company; import java.util.*; public class Main{ //并查集 static int N, M;//N个数字,M个操作 static int[]bcj=new int[10001]; static Scanner sc=new Scanner(System.in); static int F...
java数组倒置
倒置的意思就是最后一个元素变成第一个元素第一个元素变成最后一个,过程就是折中取半不遍历整个数组了遍历一半,那么就/2就可以 ,但是计算机数数的方法是从0开始的也就是说最后一个值里面是没有任何意义的 ,所以要在最后一个值那-1,且还要定义一个空的变量  因为要用到三步换值(变量) 不定义也可以。 String [] strArr = new String[]{"1","2","3","4",
数组元素倒置-Java
通过两个嵌套循环,实现将数组中的元素倒置。Java实现如下: package test; import java.util.Scanner; public class test15 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stu