使用 Python 递归创建帕斯卡三角形

Creating Pascal's Triangle using Python Recursion

我正在做一项家庭作业,要求我使用递归函数创建帕斯卡三角形。以下是我到目前为止所管理的以及我被赋予的工作。我对 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)

事实上,您在回答中根本没有使用递归。我认为您正在尝试编写公式 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)

输出:

1   
1   1   
1   2   1   
1   3   3   1   
1   4   6   4   1

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

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