Python 递归打印具有自定义间距的棱锥图案

Python 递归打印具有自定义间距的棱锥图案,python,recursion,Python,Recursion,我在python中成功地打印了一个递归金字塔模式,但我希望能够添加自定义间距,并且我在尝试时遇到了错误 以下是我的代码: def printstack(n, indent = 0): if n == 0: return 'U' else: print(' '*(n-1) + 'U '*(indent+1)) printstack(n-1, indent+1) 例如: >>> printstack(3) U

我在python中成功地打印了一个递归金字塔模式,但我希望能够添加自定义间距,并且我在尝试时遇到了错误

以下是我的代码:

def printstack(n, indent = 0):
    if n == 0:
        return 'U'
    else:
        print(' '*(n-1) + 'U '*(indent+1))
        printstack(n-1, indent+1)
例如:

>>> printstack(3)
   U
  U U
 U U U

>>> printstack(3,1)
  U U 
 U U U 
U U U U

Expected Results

>>> printstack(3,1)
    U
   U U
  U U U
输出:

      U 
     U U 
    U U U 
   U U U U 
  U U U U U 
更改空间:

printstack(5,6,3)
输出

          U   
        U   U   
      U   U   U   
    U   U   U   U   
  U   U   U   U   U   

检查下面的代码,我想你看起来像这样-

>>> def printstack(n, indent=0):
...     if n > 0:
...         printstack(n-1, indent+1)
...         print(' '*indent + 'U '*n)


>>> printstack(3)
  U 
 U U 
U U U 
>>> printstack(3,1)
   U 
  U U 
 U U U 
>>> printstack(3,2)
    U 
   U U 
  U U U 

这似乎产生了你所说的你想要的,而且也有点简单。请注意,无关的
返回已被删除

def printstack(n, indent = 0):
    if n > 0:
        printstack(n-1, indent+1)
        print(' ' * indent + 'U ' * n)

你的意思是在基本情况下打印('U')
,而不是返回它吗?@pjs实际上会导致更多问题,在每个金字塔的末尾,如果我不使用return语句,现在会打印一个带有单数“U”的新行。但是,返回它没有意义,由于您在递归中不处理返回值。我编辑了我的问题,以澄清预期结果应该是什么样子,字符之间没有添加空格,而只是从屏幕左侧推远一点。现在有意义了。。。非常感谢。哇,似乎有点不公平修改这个解决方案使用我的@那是我的睡衣,对不起,我没有读你的睡衣,这是我的coincidence@wim是的,一旦你意识到返回的
没有任何作用,这就是显而易见的解决方案。@pjs,你可以检查编辑历史记录,我的原始答案在你之前发布,解决了这个问题,wim所做的修改看起来只会让它变得干净。
def printstack(n, indent = 0):
    if n > 0:
        printstack(n-1, indent+1)
        print(' ' * indent + 'U ' * n)