如何将打印星号的Python循环代码改写为递归实现?
递归改写方案
核心逻辑
原循环的执行逻辑是从0开始,逐行打印对应数量的星号,直到打印满n行为止,对应的递归实现需要满足两个核心规则:
- 终止条件:当前打印的星号数量等于总需求行数时,停止递归
- 递归递推:打印当前行内容后,将计数+1传入下一层递归
完整实现代码
def print_stars(current, total): # 递归终止条件 if current == total: return print("*" * current) # 递归调用,打印下一行 print_stars(current + 1, total) def main(): n = int(input("How many lines to display? ")) # 替换原for循环,从0个星开始打印 print_stars(0, n) input("Press the <Enter> Key to quit") main()
注意事项
上述实现和原代码的输出结果完全一致,没有逻辑差异。但Python默认递归深度上限约为1000,如果需要打印的行数超过这个值,会触发递归深度溢出报错,这种场景下更推荐使用原循环实现。
内容的提问来源于stack exchange,提问作者Fat_Rat_800xl
相关产品推荐
相关产品推荐

