在不运行程序的情况下进行计算

时间:2018-10-05 14:50:21

标签: java

我被要求为变量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 个答案:

答案 0 :(得分:6)

每次执行最里面的语句时,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有时被称为"Gaussian sum formula"的事实,下次看到两个嵌套的循环时,内部索引的范围取决于外部索引,您应该记住这一点。

答案 1 :(得分:2)

迭代次数很少,您可以将其写出来并保持运行状态:

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