📜  门| GATE-CS-2002 |第 42 题(1)

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

门 | GATE-CS-2002 |第 42 题

本道题为计算机科学门槛考试(GATE)-计算机科学与信息技术(CS)-2002年第42题。

题目描述

给定以下程序:

def f(m):
    if m == 0: return(1)
    else: return(m * f(m-1))

print(f(3))

程序的输出结果是什么?

答案

首先,回顾一下 f 函数的定义:

def f(m):
    if m == 0:
        return 1
    else:
        return m * f(m-1)

随后,执行 f(3),即:

f(3) = 3 * f(2)
     = 3 * 2 * f(1)
     = 3 * 2 * 1 * f(0)
     = 3 * 2 * 1 * 1
     = 6

所以,最终输出结果为 6

因此本题的答案为:6

解析

本题考察了递归与函数的基础使用。函数 f 采用递归的方式来计算一个数的阶乘。在程序中,先判断输入参数 m 是否为 0,如果是,则返回 1;否则则将 mf(m-1) 相乘并返回。当 f 函数被认为是 0 时,会触发一系列递归调用,直到 m 等于 0,输出结果为 1,这时其它递归函数依次返回结果,最终获得并输出结果。

参考资料
  • Python官方文档: https://docs.python.org/zh-cn/3/tutorial/controlflow.html
  • Python教程: https://www.runoob.com/python/python-recursive-function.html