public class Cs3 {
private int value;
private String result = "1*"; public String getResult() {
return result;
} public Cs3(int value) {
this.value = value;
} public void simpls() { for (int i = 2; i < value; i++) {
if (value % i == 0) {
value = value / i;
result += i + "*";
simpls();
} }
result += value; } public static void main(String[] args) {
Cs3 r = new Cs3(40);
r.simpls();
System.out.print(r.getResult());
} }//结果是1*2*2*2*5555  ;
//后面为什么那么多5?

解决方案 »

  1.   


    public void simpls() {
    for(int i = 2; i < value; i++) {
    if (value % i == 0) {
    value = value / i;
    result += i + "*";
    i = 2;
    }
    }
    result += value;
    }
      

  2.   


    不太明白楼主的simpls方法是干什么的
      

  3.   

    不需要递归,将simpls中的递归调用改成i = 2就可以了。
      

  4.   


    public void simpls() {
            for(int i = 2; i < value; i++) {
                if (value % i == 0) {
                    value = value / i;
                    result += i + "*";
                    i = 2;
                }
            }
            result += value;
        }
    貌似3层
    最里面一层将1*2*2*2*输出了
    外面两层将那4个5输出了,应为后面两层不满足for条件了只执行了result += value;
      

  5.   


    public void simpls() {
    --------------------------------第一层
    for (int i = 2; i < value; i++) {
         if (value % i == 0) {
             value = value / i;
               result += i + "*";
    ---------------------------------------第2层
              public void simpls() {
             for (int i = 2; i < value; i++) {
               if (value % i == 0) {
               value = value / i;
                   result += i + "*";
    -----------------------------------------第3层
                    public void simpls() {for (int i = 2; i < value; i++) {
    if (value % i == 0) {
    value = value / i;
    result += i + "*";
    simpls();
    }}
    result += value;}
    -------------------------------
                     }                  }
                    result += value;                    }
    -------------------------------------------                         }                              }
                 result += value;}
      

  6.   

    result += value;问题出在这一句话
    你的是递归调用,调用到最内层的时候value=5;
    然后就是返回了,但是每次返回都会调用这句话result += value;
    你调用的深度是4个所以返回的时候就进行了4次result += value;
    所以结果后面有4个5了。你可以看这个流程图simpls(){
    simpls(){
    simpls(){
    simpls(){
    result += value;
    }
    result += value;
    }
    result += value;
    }
    result += value;
    }这样就清楚了吧。
      

  7.   

    因为你递归调用了simpls(),有一个回调的过程 调用了多少次 就会有多少个5,