📜  门| GATE-CS-2002 |问题 29(1)

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

问题 29

题目描述

考虑下面提供的程序片段。

def f(n):
    if n<=0:
        return;
    else:
        print("*");
        f(n-2);
        f(n-2);
        print("#")

f(6);

下面是程序的输出:

*
*
#
*
*
#
#
*
*
#
#
#

给出执行 f(8) 的输出。

解题思路

给出的程序递归地调用了自己两次,每调用一次,就会打印一个 '*'。直到 n <= 0,返回。

因此,当 n = 6 时,程序的输出为:

*
*
#
*
*
#
#
*
*
#
#
#

当 n = 8 时,每次递归会使 n 减少 2,因此调用两次 f(n-2) 后,打印出 '#' 的个数会比打印出 '*' 的个数多 1。所以 f(8) 的输出为:

*
*
#
*
*
#
#
*
*
#
#
#
#
*
*
#
*
*
#
#
*
*
#
#
#
#
#
#
代码实现
def f(n):
    if n <= 0:
        return
    else:
        print("*")
        f(n-2)
        f(n-2)
        print("#")

f(8)