解释这个帕斯卡算法的工作原理
Explain the working of this pascal's algorithm
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
def pascal(n):
if n == 1:
return [1]
else:
line = [1]
previous_line = pascal(n-1)
print(previous_line)
for i in range(len(previous_line)-1):
line.append(previous_line[i] + previous_line[i+1])
line += [1]
return line
print(pascal(4))
previous_line = pascal(n-1)
我没有得到这一行和 for 循环 pascal(n-1)
returns 一个整数,我们怎么可以使用len
在 for 循环
中对该整数进行函数处理
pascal(n-1)
不是 return 一个数字,它 return 是一个列表。例如 pascal(4-1)
return 列表 [1, 2, 1]
。然后,您使用 len
来获取该列表的长度。给定该长度,您可以在 i
上创建一个循环来查找该列表的元素 i
和 i+1
的总和。然后,将该总和附加到您正在创建的新列表中。
要获得示例图像中的三角形,您需要进行一些小调整:
def pascal(n, indent=""):
line = [1]
if n > 1:
previous_line = pascal(n-1, indent+" ")
for i in range(len(previous_line)-1):
line.append(previous_line[i] + previous_line[i+1])
line += [1]
print(indent + "".join([f'{i:4}' for i in line]))
return line
pascal(6)
以防万一您正在寻找更简单的答案:
ROWS = 5
def row( a, b ) :
return ' ' * (b-a-1) + ' '.join([i for i in str(11**a)])
for i in range(ROWS) :
print row( i, ROWS )
输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
如果您希望它在 python3 中工作,请在 print( .. )
调用中添加括号。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
def pascal(n):
if n == 1:
return [1]
else:
line = [1]
previous_line = pascal(n-1)
print(previous_line)
for i in range(len(previous_line)-1):
line.append(previous_line[i] + previous_line[i+1])
line += [1]
return line
print(pascal(4))
previous_line = pascal(n-1)
我没有得到这一行和 for 循环 pascal(n-1)
returns 一个整数,我们怎么可以使用len
在 for 循环
pascal(n-1)
不是 return 一个数字,它 return 是一个列表。例如 pascal(4-1)
return 列表 [1, 2, 1]
。然后,您使用 len
来获取该列表的长度。给定该长度,您可以在 i
上创建一个循环来查找该列表的元素 i
和 i+1
的总和。然后,将该总和附加到您正在创建的新列表中。
要获得示例图像中的三角形,您需要进行一些小调整:
def pascal(n, indent=""):
line = [1]
if n > 1:
previous_line = pascal(n-1, indent+" ")
for i in range(len(previous_line)-1):
line.append(previous_line[i] + previous_line[i+1])
line += [1]
print(indent + "".join([f'{i:4}' for i in line]))
return line
pascal(6)
以防万一您正在寻找更简单的答案:
ROWS = 5
def row( a, b ) :
return ' ' * (b-a-1) + ' '.join([i for i in str(11**a)])
for i in range(ROWS) :
print row( i, ROWS )
输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
如果您希望它在 python3 中工作,请在 print( .. )
调用中添加括号。