【MOOC嵩天Python語言程序設計】5.3 代碼複用與函數遞歸

一、階乘
def fact(n):
    if n == 0:
        return 1
    else:
        return n*fact(n-1)

交互模式下調用 fact(5)
輸出結果 120

或者直接在前面的代碼塊末尾加一行
print(fact(5))




二、字符串反轉
1def rvs(s):
    if s == "":
        return s
    else:
        return rvs(s[1:])+s[0]

print(rvs("123456"))

654321



2、
s="123456"
print(s[::-1])

654321


3、
s="123456"
print(s[::-2])

642


4、
s="123456"
print(s[::-3])

63


三、斐波那契數列
def f(n):
    if n == 1 or  n == 2:
        return 1
    else:
        return f(n-1) + f(n-2)

print(f(4))



四、漢諾塔
count=0
def hanoi(n, src, dst, mid):
    global count
    if n==1:
        print("{}:{}->{}". format(1, src, dst))
        count += 1
    else:
        hanoi(n-1, src, mid, dst)
        print("{}:{}->{}". format(n, src, dst))
        count +=1
        hanoi(n-1, mid, dst, src)

hanoi(3, "A", "C", "B")
print(count)


1:A->C
2:A->B
1:C->B
3:A->C
1:B->A
2:B->C
1:A->C
7
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章