2017-07-20 88 views
0

我想了解遞歸,並且我做了一小段代碼來檢查我的理解。不幸的是,我的函數不打印任何列表元素。遞歸函數不打印列表

list=['zero','one','two','three',0,1,2,3] 

def rekur(list): 
    for element in list: 
     if isinstance(element,int): 
      rekur(list) 
     else: 
      print(element) 
+1

預期輸出是什麼? – Mureinik

回答

2

您從未調用函數。你需要一個更行:

# Function 

def rekur(list): 
    for element in list: 
     if isinstance(element,int): 
      rekur(list) 
     else: 
      print(element) 

# Main program 

list=['zero','one','two','three',0,1,2,3] 
rekur(list) 

警告:您有一個無限遞歸。只要你達到一個整數,你就會以原始形式在整個列表上重現。我不確定你有什麼目的,這使得整數成爲遞歸的一個例子,所以我不知道如何爲你解決這個問題。當前程序發出

zero 
one 
two 
three 
zero 
one 
two 
three 
zero 
... 

直到它溢出調用堆棧。

+0

有趣。我會試圖找出如何制止這一點。它唯一的練習功能和我隨機選擇整數打印。 – Kempa

+0

問題是,當你敲一個int時,你只需重複你的原始呼叫,從前面再次開始。也許你會對'rekur(list [:element])'感興趣,它只會在列表中的第一個'elements'項目上重複出現。 – Prune