为什么while循环在打印pascal三角形时执行的次数超过预期? 每次执行while循环时,x增加1,而n保持不变 我刚开始学习python 请帮忙
memo = {0:1}
def fac(n):
if n not in memo:
memo[n] = n*fac(n-1)
return memo[n]
else:
return memo[n]
def pascal(x, space):
while(x <= n):
for j in range(space):
print(" ", end = "")
for i in range(0, x+1):
print ( int(fac(x)/(fac(i)*fac(x-i))), end = " " )
print("\n", end = "")
x += 1
space -= 1
pascal(x, space)
n = eval(input())
space = n
x = 0
pascal(x, space)
答案 0 :(得分:0)
您正在使用两种方法来迭代pascal
函数中的数字,while
循环和递归调用。你只需要其中一个。
保持while
循环:
def pascal(x, space):
while(x <= n):
for j in range(space):
print(" ", end = "")
for i in range(0, x+1):
print ( int(fac(x)/(fac(i)*fac(x-i))), end = " " )
print("\n", end = "")
x += 1
space -= 1
保持递归通话,将while
变为if
:
def pascal(x, space):
if(x <= n):
for j in range(space):
print(" ", end = "")
for i in range(0, x+1):
print ( int(fac(x)/(fac(i)*fac(x-i))), end = " " )
print("\n", end = "")
x += 1
space -= 1
pascal(x, space)
给定3作为输入,两个版本打印以下内容:
1
1 1
1 2 1
1 3 3 1