Python中的星号三角形(使用递归)

时间:2018-04-26 19:54:33

标签: python recursion

我已经看过多个“python星号三角形”及其解决方案,但我仍然坚持使用递归创建一个星号三角形(没有循环,这会让我看起来更容易。)下面是我目前的代码:

def main():
    num = int(input("Enter an integer: "))
    triangle = draw_triangle(num)
    print(triangle)


def draw_triangle(n):
    if n == 0:
        return
    else:
        return ("*" * n + '\n') + draw_triangle(n - 1)


main()

当我运行代码时,我收到“TypeError:必须是str,而不是NoneType”。我做了一些研究,仍然没有完全理解这个错误告诉我的是什么。如果以前问过这个问题,我很抱歉,我无法找到一个处理任何递归函数的人。谢谢。

3 个答案:

答案 0 :(得分:0)

returnreturn ""

输入:5

输出:

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

答案 1 :(得分:0)

发生此错误是因为您返回空值。请尝试返回空白字符串

解决方案: 第9行: 将142511替换为return

答案 2 :(得分:0)

代码工作正常,但只是一个小问题。 在使用基本情况(即if n == 0:进行测试时,必须将返回值设置为某个值,否则返回None。因此,在输入数字达到0后,它返回None返回None的任何内容在python中被解释为失败的情况 这是一个解决方法:

def draw_triangle(n):
    if n == 0:
        return ''
    else:
        return ("*" * n + '\n') + draw_triangle(n - 1)

def main():
    num = int(input("Enter an integer: "))
    triangle = draw_triangle(num)
    print(triangle)
main()

因此,在达到n == 0大小写后,程序将返回一个空白字符串并继续。