在完成使用迭代函数创建帕斯卡三角形的分配后,我尝试使用递归函数重新创建它。我已经到了可以让它生成与作为参数传入的数字相对应的单独行的地步。但是几次尝试让它产生整个三角形直到并包括该行都失败了。我什至尝试编写一个单独的函数,该函数迭代输入数字的范围,并使用迭代的数字调用递归函数,同时在返回该列表之前将各个行附加到列表中。所需的输出应该是一个列表列表,其中每个内部列表都包含一行三角形。像这样:
[[1], [1, 1], [1, 2, 1]...]
相反,它返回一个完全由 1 填充的嵌套列表的混乱混乱。
这是有问题的递归函数,没有第二个函数来追加行(无论如何我真的想要1个全包函数):
def triangle(n):
if n == 0:
return []
elif n == 1:
return [1]
else:
new_row = [1]
last_row = triangle(n-1)
for i in range(len(last_row)-1):
new_row.append(last_row[i] + last_row[i+1])
new_row += [1]
return new_row
需要说明的是,我已经完成了分配的任务,这只是为了更深入地了解递归......
迭代解决方案:
def triangle(n):
result = []
for row in range(n):
newrow = [1]
for col in range(1, row+1):
newcell = newrow[col-1] * float(row+1-col)/col
newrow.append(int(newcell))
result.append(newrow)
return result