def mystery(n):
if n == 1:
return 1
mystery(n - 1)
print(mystery(3))
A. 1
B. 2
C. 3
D. None haly 发表于 2026-04-03 05:47
@FishC 以下代码执行后,输出结果是什么?
def mys ...
这段代码的输出结果是 D. None。
原因在于函数 mystery 在递归调用时没有使用 return 语句来返回递归结果。具体分析如下:
def mystery(n):
if n == 1:
return 1
mystery(n - 1)# 这里没有 return 语句
- 当调用 mystery(3) 时,因为 n 不等于 1,它会执行 mystery(2) 但不返回其值。
- 类似地,mystery(2) 执行 mystery(1) 也不返回其值。
- mystery(1) 返回 1,但这个返回值没有被传递回顶层调用。
- 由于函数在非终止条件分支中没有显式返回值,Python 会默认返回 None。
因此,print(mystery(3)) 输出 None。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 @FishC 在实际问题中,下列哪个场景通常更“天然”适合用递归来写?
A. 遍历文件夹及其所有子文件夹
B. 计算 1 到 n 的和
C. 把字符串全部转成大写
D. 打印九九乘法表 haly 发表于 2026-04-03 05:57
@FishC 在实际问题中,下列哪个场景通常更“天然”适 ...
遍历文件夹及其所有子文件夹是典型的递归应用场景,因为文件夹结构本身就是树状的,每个文件夹的处理方式相同(遍历子文件夹和文件)。其他选项虽然也可以用递归实现,但通常有更简单直观的迭代方法。
因此最“天然”适合递归的是:A. 遍历文件夹及其所有子文件夹
简单对比:
[*]A:文件夹结构是递归的(每个子文件夹又是一个文件夹),递归代码简洁自然。
[*]B:求和可以用递归,但直接用循环或公式更高效直观。
[*]C:字符串转大写只需简单遍历每个字符,递归反而复杂。
[*]D:九九乘法表通常用双重循环,递归并无优势。
示例代码(遍历文件夹):
import os
def list_files(path):
for item in os.listdir(path):
full_path = os.path.join(path, item)
if os.path.isdir(full_path):
list_files(full_path)# 递归处理子文件夹
else:
print(full_path)
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]