繁体   English   中英

使用python中的递归函数打印星形模式

[英]Print star pattern using recursive functions in python

我想创建一个递归函数,该函数将根据给出的数字打印一个星形图案:它将打印出的星星乘以给出的数字,然后返回行并打印相同的东西,少加一个星星,然后以升序再次打印的方法,基本上,我想得到这个结果,如果我给4作为参数:

****
***
**
*
*
**
***
****

这是我到目前为止编写的代码,实际上可以完成我的工作,除了在打印1星之后不打印任何内容,而仅打印空白行。

def etoiles(n):
    print('*'*n)
    etoiles(n-1)

etoiles(4) 

您需要添加一种停止递归的方法以及一种打印树的另一半的方法。 一种方法是将递归放入if语句中,然后重复print部分。

def etoiles(n):
    print('*'*n)
    if n > 1:
        etoiles(n-1)
    print('*'*n)

etoiles(4)

递归函数具有“基本情况”的概念,在这些情况下,它们会停止递归。 那就是您的etoiles函数所缺少的。 如果n为0,则应停止调用自身。

def etoiles(n):
    print('*' * n)
    if n > 0:
        etoiles(n-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)

这将输出:

****
***
**
*
*
**
***
****

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM