日期:2014-05-20  浏览次数:20565 次

求大神告诉我下这个算法的执行过程。。。。。
public class ZhiYingShu {
public static void main(String[] args) {
fenjie(12);
}

public static void fenjie(int x)
{
for(int i=2;i<x/2;i++)
{
if(x%i==0)
{
System.out.print(i+"*");
fenjie(x/i);
}
}
System.out.println(x+".");
}
}


下面是控制台打出的结果,为了研究。。我在后面那个x输出时加个点来表示区别
2*2*3.
6.
3*4.
4*3.
12.

还是不太清楚这循环里面调用递归时的执行顺序。。。求大神教我
------解决方案--------------------
你单步调试最清楚了。
------解决方案--------------------
一步一步的调就行啦
------解决方案--------------------
输入12
12%2 == 0, 输出"2*"
     调用fenjie(6)
     6%2 == 0, 输出"2*"
         调用fenjie(3)
         传入3时fenjie函数直接跳过for循环,输出"3."
         里层fenjie函数返回
     i++后i == 3不满足i < 3(6/2),for循环结束,输出"6."
     里层fenjie函数返回
i++后i == 3且3 < 6(12/2)继续for循环
12%3 == 0,输出"3*"
    调用fenjie(4),由于i == 2,4 / 2 == 2,不满足i < x/2,for循环结束,输出"4."
    里层fenjie函数返回
i++后i == 4且4 < 6(12/2)继续for循环
12%4 == 0,输出"4*"
    调用fenjie(3),同样不满足for循环条件,输出"3."
    里层fenjie函数返回
i++后i == 5且5 < 6(12/2)继续for循环
12%5 != 0,进入下一次迭代
i++后i == 6但不满足6 < 6(12/2),最外层函数for循环结束
输出"12.",最外层函数返回
程序结束