完成了使用迭代函数创建Pascal三角形的任务后,我尝试使用递归函数重新创建。我已经达到了能够生成与传入参数对应的单个行的程度。但是多次尝试使其生成包括该行在内的整个三角形都失败了。我甚至尝试编写一个单独的函数,该函数迭代输入数字的范围,并在调用递归函数时将迭代的数字附加到单独的行列表中,然后返回该列表。期望的输出应该是一个列表,其中每个内部列表包含三角形的一行。格式如下:
要明确的是,我已经完成了指定任务,这只是为了更深入地理解递归...
迭代解决方案:
[[1], [1, 1], [1, 2, 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
n
个列表。这是有意的吗?你当前的输出确切是什么? - robert