鱼C论坛

 找回密码
 立即注册
查看: 209|回复: 4

[快问快答] 第049讲:函数(IX)- 递归

[复制链接]
发表于 2026-2-23 01:57:22 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 5 鱼币 才能浏览
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 6 天前 | 显示全部楼层
@FishC 以下代码执行后,输出结果是什么?

def mystery(n):
    if n == 1:
        return 1
    mystery(n - 1)

print(mystery(3))

A. 1
B. 2
C. 3
D. None
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
haly 发表于 2026-04-03 05:47
@FishC 以下代码执行后,输出结果是什么?

def mys ...


这段代码的输出结果是 D. None。

原因在于函数 mystery 在递归调用时没有使用 return 语句来返回递归结果。具体分析如下:


  1. def mystery(n):
  2.     if n == 1:
  3.         return 1
  4.     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 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
@FishC 在实际问题中,下列哪个场景通常更“天然”适合用递归来写?
A. 遍历文件夹及其所有子文件夹
B. 计算 1 到 n 的和
C. 把字符串全部转成大写
D. 打印九九乘法表
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
haly 发表于 2026-04-03 05:57
@FishC 在实际问题中,下列哪个场景通常更“天然”适 ...


遍历文件夹及其所有子文件夹是典型的递归应用场景,因为文件夹结构本身就是树状的,每个文件夹的处理方式相同(遍历子文件夹和文件)。其他选项虽然也可以用递归实现,但通常有更简单直观的迭代方法。

因此最“天然”适合递归的是:A. 遍历文件夹及其所有子文件夹

简单对比:
  • A:文件夹结构是递归的(每个子文件夹又是一个文件夹),递归代码简洁自然。
  • B:求和可以用递归,但直接用循环或公式更高效直观。
  • C:字符串转大写只需简单遍历每个字符,递归反而复杂。
  • D:九九乘法表通常用双重循环,递归并无优势。


示例代码(遍历文件夹):

  1. import os

  2. def list_files(path):
  3.     for item in os.listdir(path):
  4.         full_path = os.path.join(path, item)
  5.         if os.path.isdir(full_path):
  6.             list_files(full_path)  # 递归处理子文件夹
  7.         else:
  8.             print(full_path)
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-9 12:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表