A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 征服 中级黑马   /  2014-4-12 22:56  /  1270 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

程序总是出错,可能是递归调用用错了,请帮助修改一下,谢谢!
class Test10
{
        public static void main(String[] args)
        {
               
                int[] arr=new int[100];
                for(int i=0;i<100;i++)
                {
                        arr[i]=i+1;
                }
                method(arr);
               
        }
        public static void  method(int a[])
        {
                int[] b = new int[(a.length-a.length/14)];
                int[] c = new int[(a.length-a.length/14)];
                int k=0;
                int s=0;
                while(a.length!=1)
                {
                        //获得数组b[]
                        for(int j=0;j<b.length;j++)
                        {
                                b[0]=1;
                                if(j!=0&&(j%13)==0)
                                {
                                        k++;
                                        b[j]=a[j+k];
                                       
                                }
                                else if((j%13)!=0)
                                {
                                        b[j]=a[j+k];
                                }                               
                        }


                        //获得数组c[]
                        for(int n=0;n<b.length;n++)
                        {
                               

                                if(n<b.length%13)
                                {
                                        c[n]=b[n+(b.length-b.length%13)];
                                }
                                else
                                {
                                                c[n]=b[s++];                                       
                                }
                       
                        }
               
               
                //把数组c[]传给method()方法,递归调用
                method(c);
                }
                if (a.length==1)
                {
                        System.out.println(a[0]);
                }
        }       
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

3 个回复

正序浏览
好的,谢谢!
回复 使用道具 举报
  1. class Test10
  2. {
  3.        
  4.         public static void main(String[] args)
  5.         {
  6.                
  7.                 int[] arr=new int[100];
  8.                 for(int i=0;i<100;i++)
  9.                 {
  10.                         arr[i]=i+1;
  11.                 }
  12.                 method(arr);
  13.                
  14.         }
  15.         public static void  method(int a[])
  16.         {
  17.                 int[] b = new int[(a.length-a.length/14)];
  18.             int[] c = new int[(a.length-a.length/14)];
  19.                 while(a.length!=1)
  20.                 {
  21.                         int s=0;
  22.                         int k=0;
  23.                         //获得数组b[]
  24.                         for(int j=0;j<b.length;j++)
  25.                         {
  26.                                 b[0]=1;
  27.                                 if(j!=0&&(j%13)==0)
  28.                                 {
  29.                                         k++;
  30.                                         b[j]=a[j+k];
  31.                                        
  32.                                 }
  33.                                 else if((j%13)!=0)
  34.                                 {
  35.                                         b[j]=a[j];
  36.                                 }                                
  37.                         }


  38.                         //获得数组c[]
  39.                         for(int n=0;n<b.length;n++)
  40.                         {
  41.                                 

  42.                                 if(n<b.length%13)
  43.                                 {
  44.                                         c[n]=b[n+(b.length-b.length%13)];
  45.                                 }
  46.                                 else
  47.                                 {
  48.                                                 c[n]=b[s++];                                       
  49.                                 }
  50.                         
  51.                         }
  52.                
  53.                
  54.                 //把数组c[]传给method()方法,递归调用
  55.                 if(c[1]==0){
  56.                         method(c);
  57.                 }   
  58.                 }
  59.                 if (a.length==1)
  60.                 {
  61.                         System.out.println(a[0]);
  62.                 }
  63.         }        
  64. }
复制代码

主要是死循环调用和脚标越界问题,其它的我没作优化,楼主再看看吧。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
有人在吗?求助!谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马