编码小伙子,我想创建一个 递归 函数,该函数将根据给出的数字打印一个星形图案: 它将打印星星乘以给出的数字,然后返回行,并用少一个星星打印相同的东西 然后以升序的方式再次执行,基本上,如果我给4作为参数,我想得到这个结果:
****
***
**
*
*
**
***
****
这是我到目前为止编写的代码,它实际上可以完成我的工作,除了在打印1星之后不打印任何内容,而仅打印空白行。
def etoiles(n):
print('*'*n)
etoiles(n-1)
etoiles(4)
答案 0 :(得分:4)
您需要添加一种停止递归的方法以及一种打印树的另一半的方法。一种方法是将递归放入if
语句中,然后重复print
部分。
def etoiles(n):
print('*'*n)
if n > 1:
etoiles(n-1)
print('*'*n)
etoiles(4)
答案 1 :(得分:1)
递归函数具有“基本情况”的概念,在这些情况下,它们停止递归。这就是您的etoiles
函数所缺少的。如果n
为0,则它应该停止自行调用。
def etoiles(n):
print('*' * n)
if n > 0:
etoiles(n-1)
答案 2 :(得分:1)
这是另一半
# Adam's method
def down(n):
print('*' * n)
if n > 1:
down(n-1)
# The reverse of down is up.
def up(s,n):
print('*' * n)
if n < s:
up(s,n+1)
def etoiles(n):
down(n)
up(n,1)
etoiles(4)
这将输出:
****
***
**
*
*
**
***
****