我正在尝试使用递归函数在Python中打印倒置的金字塔,同时还使用缩进。到目前为止我所拥有的是:
def printStars(n, indent):
if n == 0:
return
elif n == 1:
print(indent * ' ' * '*')
else:
print(n * '*' + indent * ' ')
printStars(n-2,indent)
printStars(10,2)打印:
**********
*******
******
****
**
但我想要打印:
**********
********
******
****
**
任何帮助将不胜感激
编辑: 我现在有:
def printStars(n, indent):
if n == 0:
return
elif n == 1:
print(n)
else:
print(indent * ' ' + n * '*')
printStars(n-2,indent)
它提供金字塔但不是正确的方式。
答案 0 :(得分:0)
让我们假设您的输入是基本大小,在这种情况下,我们首先需要解决偶数或奇数问题。
def pyramid(size):
if (size%2 == 0): #even
print '*' * size
i = 1
while i < size/2:
str1 = (' ' * i)
str2 = ( '*' * (size - 2*i))
print str1 + str2 + str1
i+=1
else:
print '*' * size
i = 1
while i < size/2:
str1 = (' ' * i)
str2 = ( '*' * (size - 2*i))
print str1 + str2 + str1
i+=1
str1 = (' ' * i)
print str1+'*'+str1
我没有看到输入需要缩进,但这可以很容易地考虑到这段代码。认为这是一个很好的练习,可以理解试图将我的例子用作指南的问题。
答案 1 :(得分:0)
def printStars(n, indent):
if n == 0:
return
elif n == 1:
print(indent * ' ' + '*')
else:
print(indent * ' ' + n * '*')
printStars(n - 2, indent + 1)
您的代码的主要区别是什么?函数调用的参数,以及n == 1时应该发生的事情。
答案 2 :(得分:0)
似乎有效的解决方案之一是:
def stars_pyramid(n, indent):
if n <= 0:
return
s = '*' * n
i = indent * ' '
print i + s
stars_pyramid(n-2, indent+1)
n = 10
indent = 0
stars_pyramid(n, indent) outputs:
**********
********
******
****
**