繁体   English   中英

使用Python递归创建Pascal的三角形

[英]Creating Pascal's Triangle using Python Recursion

我正在做一项作业,要求我使用递归函数创建一个Pascal Triangle。 以下是到目前为止我已经完成的工作以及获得的工作经验。 我对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 (对“结束”条件使用警戒: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 )。

暂无
暂无

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

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