如何编写按指定公式生成序列的Python递归函数?
递归打印序列代码修复
现存问题
- 缺少递归终止的基线条件,会导致无限递归报错
- 递归调用时count参数逻辑错误,应该递减而非递增
- 未打印初始start值,和预期输出不符
修复后代码
直接打印版本
def print_sequence_rec(start, count): # 基线条件:剩余打印次数耗尽时终止递归 if count < 0: return print(start, end=" ") next_val = (start * 2) + 5 print_sequence_rec(next_val, count - 1)
调用print_sequence_rec(2, 5)即可输出2 9 23 51 107 219 ,如果需要去掉末尾多余空格,可使用返回字符串拼接的版本:
无末尾空格版本
def print_sequence_rec(start, count): if count < 0: return "" current = str(start) next_val = (start * 2) + 5 suffix = print_sequence_rec(next_val, count - 1) return current + (f" {suffix}" if suffix else "") # 调用示例 print(print_sequence_rec(2, 5))
输出完全匹配预期:2 9 23 51 107 219
逻辑说明
基线条件设为count < 0时终止,count为传入的总个数时,从count递减到0刚好会打印count+1个值,和示例的参数输出对应;每次递归先处理当前值,再计算下一个序列值传入下一层递归,剩余打印次数同步减1。
内容的提问来源于stack exchange,提问作者user16918965
相关产品推荐
相关产品推荐

