2014-12-19 67 views
-5
def a(): 
    #function 
    if "b" in c: 
     a() 
    else: 
     #proceed 

我可以這樣做嗎?一個函數可以調用它自己嗎?

+6

當你嘗試時發生了什麼? – 2014-12-19 10:04:34

+4

這是[遞歸](https://en.wikipedia.org/wiki/Recursion)這是可能的。 – 2014-12-19 10:04:43

+1

是的,你可以。附加信息:Python中沒有私有函數。你要求的是遞歸。 – 2014-12-19 10:04:53

回答

-5
的原因,你可以

,就是遞歸函數,例如(刪除一個目錄,包括子目錄和文件):

def removeDir(dirPath): 
    if not os.path.isdir(dirPath): 
     return 
    files = os.listdir(dirPath) 
    try: 
     for file in files: 
      filePath = os.path.join(dirPath, file) 
      if os.path.isfile(filePath): 
       os.remove(filePath) 
      elif os.path.isdir(filePath): 
       removeDir(filePath) 
     os.rmdir(dirPath) 
    except Exception, e: 
     print e 
+5

對於不瞭解遞歸的人來說,這將很難理解。也許你應該舉一個更簡單的例子。 – 2014-12-19 10:12:09

+0

但是我真的認爲這已經是一個非常簡單的例子了@ VincentBeltman – NeoWu 2014-12-19 10:24:31

+1

我很抱歉,但並沒有說明。看看其他答案。它們簡單易懂,不需要關於其他庫的知識。 (在你的情況下) – 2014-12-19 10:29:42

1

是的,可以。它被稱爲遞歸函數。例如考慮下面的程序。

def a(num): 
    if num % 2 == 0: 
     print(num) 
    else: 
     num+= 1 
     a(num) 

a(num)函數需要一個整數。如果它可以被二整除,則打印該值,否則遞增變量num並用新輸入調用它自己。

>>> a(3) 
4 
>>> a(5) 
6 
>>> a(6) 
6 
2

是的,你可以做到。這將是一個遞歸函數。舉例:

def pow(x, n): 
    if n == 0: #this if makes the function stop calling itself 
     return 1 
    else: 
     return x * pow(x, n-1) 

print(pow(2, 3)) 
>>> 8 

遞歸是編程或編碼問題的一種方式,其中函數在其主體中調用一次或多次。通常,它返回此函數調用的返回值。如果函數定義滿足遞歸條件,我們稱這個函數爲遞歸函數。

相關問題