解决方案 »

  1.   

     public void judge(int personNum, int gameNum, String flag) {
            for(int i = 0;i<personNum;i++) {
                if(gameNum == 0) {
                    flag = "Yes";
     
                    break;
                }else if(gameNum < 0) {
                    continue;
                    }else {
                        judge(personNum - i, gameNum - i*(gameNum-i), flag);
                }
            }
            System.out.println(flag);
     
        }你这段代码明显有问题,jude里面调用jude,如果gameNum 不是一开始为0,会一直不停调用,知道用完内存,所以会报StackOverflowError。而且不建议新建一个class,直接写成方法,用StrangeGame 的对象去调用不就行了,或者写成静态方法直接用。自己检查一下算法,不是太大的问题。
      

  2.   

    补充一下,比如你gameNum传入1的时候,i从0开始personNum - i  和 gameNum - i*(gameNum-i)根本没变,所以死循环了
     if(gameNum == 0) {
                    flag = "Yes";
      
                    break;
                }else if(gameNum < 0) {
                    continue;
                    }else {
                        judge(personNum - i, gameNum - i*(gameNum-i), flag);//i此时为0 传入的personNum和 gameName没有变化,所以死循环了