Java简单for循环算法输出24的运行逻辑疑问
代码运行逻辑拆解
你梳理的逻辑规则本身没有错误,只是没有逐轮代入数值验证循环过程,一步步走每一轮的变量变化就能得到结果:
public class Test1 { public static void main (String[]args) { int number = 0; for (int i = 0; i < 5; i++) { if (number != 0) { number = i * number; } else { number = i; } } System.out.println (number); } }
- 初始状态:
number = 0,循环未启动 - 第一轮循环,i=0:
此时number = 0命中else分支,number = i = 0,本轮结束后number仍为0 - 第二轮循环,i=1:
此时number = 0命中else分支,number = i = 1,本轮结束后number变为1 - 第三轮循环,i=2:
此时number = 1 != 0命中if分支,number = 2 * 1 = 2,本轮结束number为2 - 第四轮循环,i=3:
此时number = 2 != 0命中if分支,number = 3 * 2 = 6,本轮结束number为6 - 第五轮循环,i=4:
此时number = 6 != 0命中if分支,number = 4 * 6 = 24,本轮结束number为24 - 循环终止(i下一次取值为5,不满足i<5的条件),最终打印值就是24,这段代码本质是计算4的阶乘
4! = 1*2*3*4 = 24。
内容的提问来源于stack exchange,提问作者Neo
相关产品推荐
相关产品推荐

