如何递归实现生成小于n的k的倍数的通用Python程序?
通用化倍数打印函数的修改方案
原代码的问题在于递归时硬编码了步长7,导致只能处理7的倍数,无法适配任意k值。要实现通用版本,需要将步长改为动态传入的参数,而非固定值。
修改后的代码
def multiples(step, n, current=None): """打印小于等于n的step的所有倍数""" # 第一次调用时初始化当前值为第一个倍数(即step本身) if current is None: current = step if current <= n: print(current) # 递归时使用传入的step作为步长累加 multiples(step, n, current + step) # 示例调用:打印7的倍数(小于等于500) multiples(7, 500) # 另一个示例:打印3的倍数(小于等于20) multiples(3, 20)
修改说明
- 新增
current参数并设置默认值None,用于记录当前要打印的倍数,第一次调用时自动初始化为step(即第一个倍数) - 将原代码中硬编码的
k +=7改为current + step,确保每次递归都使用传入的步长生成下一个倍数 - 更新文档字符串,使其描述通用功能而非仅针对7的倍数
内容的提问来源于stack exchange,提问作者Karim Loberg
相关产品推荐
相关产品推荐

