微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > Java平台 > J2SE >

求大神告诉我下这个算法的执行过程。。。。。

时间:2014-04-15 17:06  浏览:努力统计中...
publicclassZhiYingShu{ publicstaticvoidmain(String[]args){ fenjie(12); } publicstaticvoidfenjie(intx) { for(inti=2;ix/2;i++) { if(x%i==0) { System.out.print(i+ * ); fenjie(x/i); } } System.out.println(x+ . ); } } 下面是控制台打出的结
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.",最外层函数返回
程序结束



非常感谢 我是新手。。。谢谢谢谢~~~~
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线------