1. 程式人生 > >Python-函式遞迴呼叫

Python-函式遞迴呼叫

案例一:漢諾塔

例一:

def move(n, a, buffer, c):
    if n ==1:
        print('move', a, '-->', c)
    else:
        move(n-1, a, c, buffer)
        move(1, a, buffer, c)
        move(n-1, buffer, a, c)

move(3, 'A','B','C')

例二:

def hanoi(n,x,y,z):
    if n == 1:
        print(x,'--->',z)
    
else: hanoi(n-1,x,z,y)#將前n-1個盤子移動到y上 print(x, '--->', z)#將最底下的盤子移動到z上 hanoi(n-1,y,x,z)#將y上的n-1個盤子移動到z上 if __name__ == '__main__': num = int(input("請輸入漢若塔層數:")) hanoi(num,'X','buffer','Z')

案例二:求階乘

例一:

def f(n):
    if n == 0:
        sum = 1
    else:
        sum 
= n * f(n-1) return sum s = int(input('輸入一個整數:')) p = f(s) print('%s!=%s' % (s,p))

例二:

def factorial(n):
    res = n
    for i in range(1,n):
        res *= i
    return res
if __name__ == '__main__':
    num = int(input("請輸入一個正整數:"))
    result = factorial(num)
    print("%s的階乘為:%s" % (num,result))

案例三:利用遞迴將輸入的字串反向輸出

def output(str,len):
    if len == 0:
        return
    print(str[len-1])
    output(str,len-1)
s = input("請輸入字串:")
l = len(s)
output(s,l)