我想确保在每次递归开始时'rep'不会为0。在当前点,它默认为从0开始,但我希望它保存rep + = 1的值。
有一个简单的解决办法吗?
def printPattern(n,k,rep =0):
'prints a pattern of stars'
if n == k:
print ('{}{}'.format(' '*rep,'*'*n))
elif n%2 == 0:
rep+=1
print ('{}{}'.format(' '*rep,'*'*n))
printPattern(n+1,k)
else:
rep+=1
print ('{}*'.format(' '*rep))
printPattern(n+1,k)
答案 0 :(得分:1)
您可以从递归调用中实际传递rep开始
printPattern(n+1,k, rep)
def printPattern(n,k,rep =0):
'prints a pattern of stars'
if n == k:
print ('{}{}'.format(' '*rep,'*'*n))
elif n%2 == 0:
rep+=1
print ('{}{}'.format(' '*rep,'*'*n))
printPattern(n+1,k, rep)
else:
rep+=1
print ('{}*'.format(' '*rep))
printPattern(n+1,k, rep)
答案 1 :(得分:1)
rep+=1
print ('{}{}'.format(' '*rep,'*'*n))
printPattern(n+1,k, rep)
如果将新值rep
作为第3个参数传递,则不会使用默认值0。
因此,当您第一次调用此函数时,您实际上可以跳过使用第3个参数,然后将使用默认值。但下一次,对此函数的每次递归调用都将rep
作为第三个参数,作为rep
的当前值传递