2015-07-12 204 views
-3

我有一個關於python遞歸函數的問題。迭代器的Python遞歸

我知道函數可以很容易替換循環/迭代,但你也可以在遞歸函數中使用for/while語句,它仍然是遞歸的?

+0

所以ü想裏面遞歸函數for循環的一個函數裏? – Ja8zyjits

+0

我想要一個遞歸函數內的for循環 – COntroke

回答

2

是的,你可以。遞歸只是意味着一個函數是根據自身定義的。它對函數的定義沒有任何其他限制。

考慮例如爲:

def myLen(l): 
    for i in range(3): 
    print "Hello" 

    return 1 + myLen(l[1:]) if l else 0 

儘管這是它採用了for循環的事實遞歸函數。

+0

因此,如果我使用for循環,它仍然是一個遞歸函數? – COntroke

+1

@COntroke:是的。它是遞歸的,因爲'myLen'的定義涉及到'myLen'本身的調用。即該功能是根據其自身定義的。 –

1

是的,這是可能的:

def yop(x): 
    result = 0 
    for i in range(0, x): 
     result += yop(i-1) 
    return result 

雖然,我不知道這樣一個簡單的答案將是你遇到了(除非你只是好奇,這是否是可能的問題有所幫助)。如果您仍然有疑問,可以發佈代碼示例或更詳細地描述您嘗試解決的問題。

希望這會有所幫助!

+0

感謝它的幫助 – COntroke

0

是的,這是可能的樣子,

def fact(n): 
    r=1 
    for i in range(2,n+1): 
     r*=i 
    return r 

print fact(3)