python函數遞歸的幾個例子

斐波那契數列1,1,2,3,5,8,13,21……

#!/usr/bin/env python
# encoding: utf-8

def fib(n):
    if n == 1 or n == 2:
        return  1
    else:
         return fib(n-1) + fib(n-2)


print fib(6)


漢諾塔 
#!/usr/bin/env python
# encoding: utf-8

count  = 0

def hanoi(n,a='左',b='中',c="右"):
    global count
    if n  ==  1:
        format = 'Move %3d from % 5s to % 5s    count:%i'
        count += 1
        print format % (n,a,c,count)
    else:
        hanoi(n-1,a,c,b)
        format = 'Move %3d from % 5s to % 5s    count:%i'
        count +=1
        print format % (n,a,c,count)
        hanoi(n-1,b,a,c)


hanoi(4)



迴文數
def  is_panlindrom_rec(arg):
    if len(arg) <=1:     
        return True
    else:
        if arg[0] != arg[-1]
            return False
        else:
            return is_panlindrom_rec(arg[1:-1])




階乘
def p(n):
    if n == 1 or n == 0:
        return 1
    else:
        return n * p(n-1)



隨機停車
#!/usr/bin/env python
# encoding: utf-8

import random

def parking(low,high):
    if high - low < 1:
        return 0
    else:
         x = random.uniform(low,high-1)
         return  1 + parking(low,x) \
             + parking(x+1,high)



print parking(0,9)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章