Python-函式遞迴呼叫
阿新 • • 發佈:2019-01-02
案例一:漢諾塔
例一:
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)