Python递归实现三角形图案打印:倒置输出问题求助
修复递归打印正三角的问题
你的代码之所以输出倒三角,核心原因是jtriangle函数的执行顺序搞反了——当前逻辑是先打印y个星号的行,再递归处理y-1行,这会让星号多的行先输出,星号少的行后输出,自然形成倒三角。
解决方案
调整jtriangle里的执行顺序,先递归处理行数更少的子问题,再打印当前行数对应的星号行。这样就能先输出星号少的行,再逐步递增,得到正三角。
修改后的代码:
def itriangle(x): if x == 0: return print("*", end="") itriangle(x-1) def jtriangle(y): if y == 0: return # 先递归处理y-1行,再打印当前行 jtriangle(y-1) itriangle(y) print() jtriangle(5)
运行结果
执行后会得到预期的正三角:
* ** *** **** *****
逻辑说明
递归打印递增序列的关键是先解决规模更小的子问题(比如先完成1个星号行的打印,再处理2个星号的行),而非先处理当前规模的问题。你之前的逻辑是从大到小处理,调整顺序后变成从小到大,就完全符合预期了。
内容的提问来源于stack exchange,提问作者0mni
相关产品推荐
相关产品推荐

