【发布时间】:2017-08-11 21:00:37
【问题描述】:
我需要编写一个函数来使用递归将 Pascal 的三角形生成为元组。
e.g pascal(5)
((1,), (1, 1), (1, 2, 1), (1, 3, 3, 1), (1, 4, 6, 4, 1))
我可以使用以下函数将其生成为列表:
def triangle(n):
if n == 0:
return []
elif n == 1:
return [[1]]
else:
new_row = [1]
result = triangle(n-1)
last_row = result[-1]
for i in range(len(last_row)-1):
new_row.append(last_row[i] + last_row[i+1])
new_row += [1]
result.append(new_row)
return result
我已经尝试将其更改为元组:
def pascal(n):
if n==0:
return ()
elif n==1:
return ((1,),)
else:
new_row = (1,)
result = pascal(n-1)
last_row = result[-1]
print(last_row)
for i in range(len(last_row)-1):
new_row = new_row+last_row[i]+last_row[i+1]
new_row = new_row +(1,)
result=result+(new_row,)
return result
但它不起作用,我收到错误len(last_row)-1 type int has no len。
我不确定如何修复此代码,如果有任何帮助,我将不胜感激。
【问题讨论】:
-
当您
print和last_row时,您在输出中看到了什么?因为它不是元组...(提示提示) -
@JaredSmith,是的,我意识到了这一点,但不确定如何修复代码。
标签: python list recursion tuples pascals-triangle