📜  门| GATE-CS-2014-(Set-2) |第 52 题(1)

📅  最后修改于: 2023-12-03 15:28:43.820000             🧑  作者: Mango

题目

下面给出了一个函数 foo() 的实现,请选择可能的输出结果。

def foo(n):
    if n < 1:
        return
    for i in range(1, n):
        for j in range(i, n):
            for k in range(j, n):
                print(i, j, k)
n = 3
foo(n)

(A) 无输出 (B) 1 1 1,1 1 2,1 1 3,1 2 2,1 2 3,1 3 3,2 2 2,2 2 3,2 3 3 (C) 1 1 1,1 1 2,1 1 3,1 2 2,1 2 3,1 3 3,2 2 2,2 2 3,2 3 3,3 3 3 (D) 1 1 1,1 1 2,1 1 3,1 2 2,1 2 3,1 3 3,2 2 2,2 2 3,2 3 3,3 3 3,3 3 2,3 2 2,3 2 3,3 1 1,3 1 2,3 1 3

解析

该函数是一个三重循环,但是因为第一层循环是 for i in range(1, n),所以只有在 n >= 2 的情况下才会有输出。

内层循环中,range(j, n)range(k, n) 中的 n 都相同,所以输出的结果中,第三个数都是按顺序不断增加的。

因此,此题目为一个三层循环,由于 range 函数左闭右开原则,所以如代码实现中,i 的取值不会包含最后一个点。因此,上面程序的输出结果应为:

1 1 2
1 1 3
1 2 2
1 2 3
1 3 3
2 2 3
2 3 3

因此,选项 (B) 是正确的。

答案

选项 (B)

参考资料