用Python递归创建Pascal三角形

2024-04-25 05:57:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个作业,要求我用递归函数创建一个Pascal三角形。以下是我迄今为止所做的,以及我被赋予的工作。我对Python和编程还很陌生,所以我不知道该从这里开始,任何帮助都将不胜感激!在

def combination(n, k):
    print((n - 1) / (k - 1)) + ((n - 1) / k)

def pascals_triangle(rows):
    for row in range(rows):
        answer = ""
        for column in range(row + 1):
            answer = answer + combination(row, column) + "\t"
        print(answer)

pascals_triangle(5)

Tags: answerinfordef作业rangecolumnrows
1条回答
网友
1楼 · 发布于 2024-04-25 05:57:56

事实上,你根本没有在你的答案中使用递归。我想你是想把公式nCk=(n-1)C(k-1)+(n-1)Ck编码。因此,您需要从自身内部调用combination(使用“end”条件的保护:nC0=nCn=1):

def combination(n, k):
    if k == 0 or k == n:
        return 1
    return combination(n - 1, k - 1) + combination(n - 1, k)

def pascals_triangle(rows):
    for row in range( rows):
        answer = ""
        for column in range( row + 1):
            answer = answer + str(combination(row, column)) + "\t"
        print(answer)

pascals_triangle(5)

输出:

^{pr2}$

请注意,这是一种非常低效的方法:每次获得二项式系数时,都会用相同的参数多次调用combination。您可以考虑在执行过程中缓存找到的系数。在

代码的另一个问题是,combination函数实际上并没有返回任何内容,它只是打印一个值并退出(返回None)。在

相关问题 更多 >