如果抛开这道题目的迷惑性(它问的是几条 print 语句,而不是打印输出几条
hello
),问该程序打印输出多少
hello
呢?
尤其注意第三个for
循环,它与第二个for
循环是相辅相成的,两个for
循环(i,j
)加在一起执行的次数== j
执行的次数+j
执行的次数 * k
执行的次数。
所以本题:
1+1×(n−1)+2+2×(n−2)+3+3×(n−3)+⋯(n−1)+(n−1)×1+n
当 n=5 时,计算得35;
用python仿真如下:
n, c = 5, 0
for i in range(1, n+1):
for j in range(1, i+1):
c += 1
print(c, 'j hello')
for k in range(i+1, n+1):
c += 1
print(c, 'k hello')
print()
print(cnt)
运行结果如下:
1 j hello
2 k hello
3 k hello
4 k hello
5 k hello
6 j hello
7 k hello
8 k hello
9 k hello
10 j hello
11 k hello
12 k hello
13 k hello
14 j hello
15 k hello
16 k hello
17 j hello
18 k hello
19 k hello
20 j hello
21 k hello
22 k hello
23 j hello
24 k hello
25 j hello
26 k hello
27 j hello
28 k hello
29 j hello
30 k hello
31 j hello
32 j hello
33 j hello
34 j hello
35 j hello
35