2012-10-16 181 views
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) 
+3

將您的代表傳遞給遞歸函數調用.. –

回答

1

您可以通過實際傳遞代表你的遞歸調用

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
rep+=1 
    print ('{}{}'.format(' '*rep,'*'*n)) 
    printPattern(n+1,k, rep) 

如果傳遞rep作爲第三個參數的新值,則默認值0開始將不會被使用。

因此,當您第一次調用此函數時,實際上可以跳過使用第三個參數,然後使用默認值。但是下一次,每次遞歸調用此函數都會以rep作爲第三個參數,作爲當前值傳遞rep