我被要求命名下面的算法将在运行后输出的变量 x 的值。我不知道如何在不实际将其写入实际 Java 程序的情况下计算它。解应该是 1024。我如何在纸上计算这个?算法:int n = 4;int x = 1;for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { x += x; }}System.out.println(x);
2 回答
慕慕森
TA贡献1856条经验 获得超17个赞
在x += x
双打 x
每次执行最里面的语句时。内循环执行1 + 2 + 3 + 4 = 4 * (4 + 1) / 2 = 10
次数。因此,结果必须是2^10 = 1024
。
对于一般来说n
,它应该是这样的2^((n + 1) * n / 2)
。
1 + 2 + ... + n = (n + 1) * n / 2
有时称为“高斯求和公式”的事实,下次看到两个嵌套循环时,您应该记住它,其中内部索引的范围取决于外部索引。
眼眸繁星
TA贡献1873条经验 获得超9个赞
几乎没有足够的迭代,您可以从字面上将其写出来并保持运行记录:
i = 1
j = 1 to 1
1) x = x + x 2
i = 2
j = 1 to 2
1) x = x + x 4
2) x = x + x 8
i = 3
j = 1 to 3
1) x = x + x 16
2) x = x + x 32
3) x = x + x 64
i = 4
j = 1 to 4
1) x = x + x 128
2) x = x + x 256
3) x = x + x 512
4) x = x + x 1024
添加回答
举报
0/150
提交
取消