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