0

我想确保在每次递归开始时'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)
4

2 回答 2

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)
于 2012-10-16T16:32:48.093 回答
1
    rep+=1
    print ('{}{}'.format(' '*rep,'*'*n))
    printPattern(n+1,k, rep)

如果您将新值rep作为第三个参数传递,则不会使用默认值 0。

所以,当你第一次调用这个函数时,你实际上可以跳过使用第三个参数,然后将使用默认值。但是下一次,对这个函数的每次递归调用都将rep作为第三个参数,作为当前值传递rep

于 2012-10-16T16:32:56.567 回答