一个函数可以调用自己吗?

时间:2014-12-19 10:03:19

标签: python

def a():
    #function
    if "b" in c:
        a()
    else:
        #proceed

我能这样做吗?

3 个答案:

答案 0 :(得分:3)

是的,你可以做到。这将是一个递归函数。一个例子:

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

递归是一种编程或编码问题的方法,其中函数在其体内调用自身一次或多次。通常,它返回此函数调用的返回值。如果函数定义满足递归条件,我们将此函数称为递归函数。

答案 1 :(得分:1)

是的,你可以。它被称为递归函数。例如,考虑以下程序。

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

a(num)函数接受整数。如果它可被2整除,则打印该值,否则增加变量num并使用新输入调用自身。

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

答案 2 :(得分:-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