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

u010868738 2014-04-15 11:00:42
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.

还是不太清楚这循环里面调用递归时的执行顺序。。。求大神教我
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hh_ll 2014-04-15
  • 打赏
  • 举报
回复
一步一步的调就行啦
tony4geek 2014-04-15
  • 打赏
  • 举报
回复
你单步调试最清楚了。
u010868738 2014-04-15
  • 打赏
  • 举报
回复
非常感谢 我是新手。。。谢谢谢谢~~~~
sleeplacker 2014-04-15
  • 打赏
  • 举报
回复
输入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.",最外层函数返回 程序结束

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧