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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 征服 中级黑马   /  2014-4-13 15:23  /  2388 人查看  /  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 收起 理由
Silent_memory + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
这样的话 会出现一个这样的错误  Exception in thread "main" java.lang.StackOverflowError  StackOverflowError是由于当前线程的栈满了  ,也就是函数调用层级过多导致。
比如死递归。  你这个就是死循环  method()调用自己  一直调用自己  method()后的代码执行不到
一直在上面循环

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 很给力!

查看全部评分

回复 使用道具 举报
好的,谢谢!
回复 使用道具 举报
一般不要出现死循环,注意调用的层次
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马