2016-02-27 31 views
-3
def strings_in_a_list(n, s): 
    """ 
    ---------------------------- 
    Creates a Python list with a string, s, repeated n times. Uses recursion. 
    Use: list = strings_in_a_list (n, s) 
    ----------------------------- 
    Preconditions: 
     n - a nonnegative integer (int) 
     s - a string (str) 
    Postconditions: 
     returns 
     l - a list with n copies of the string s (list of string) 
    ----------------------------- 
    """ 
    l = [] 
    l.append(s) 
    if len(l) != n: 
     l = l * n 
    return l 

這是一個可接受的遞歸函數,如果沒有,你能否告訴我一個更好和適當的方式做到這一點?提前致謝。用一個字符串s創建一個Python列表,重複n次。使用遞歸

輸出應該是這樣的例子:
strings_in_a_list(3,「夢」)應返回列表[「夢」,「夢」,「夢」]

+0

如果您可以使您的程序更具可讀性,會更好嗎?在每行的開頭添加4個空格。 – Hun

回答

0

遞歸函數應當調用本身和在最低限度上採取以下一般形式,將根據您要做的事情而改變。

if (terminate condition): 
    return (final value) 
else: 
    return function(x - 1) 

這會做你想做的。終止條件是當n等於0時,返回空列表。否則l等於函數調用的結果,在返回之前追加s

def strings_in_a_list(n, s): 
    if n == 0: 
     return [] 
    else: 
     l = strings_in_a_list(n - 1, s) 
     l.append(s) 
     return l 
+0

如果對recusive調用返回的列表追加''('N ** 2)'運行時間,而不是進行字符串連接:'L = string_in_a_list(n-1,s); L.append(一個或多個);返回L' – Blckknght

+0

謝謝,我剛剛進行了測試並即將更新。由於OP問題使用了一個列表,我認爲使用列表提供答案會更好。 –

+0

非常感謝,這真的很有幫助 –

相關問題