本章主要講述 【用python編寫斐波那契數列及漢諾塔】
"""
用python寫斐波那契數列,以及漢諾塔
知識點:遞歸
"""
def febonnacci(n):
"""
斐波那契數列:1 1 2 3 5 8 13.. 前兩個數之和 = 第三個數
思路:當輸入數字n=1,2時,直接為1,否則為遞歸:fb(n - 1) + fb(n - 2)
:param n:
:return:
"""
if n < 1:
print("重新輸入大於等於1的數")
return -1
if n == 1 or n == 2:
return 1
else:
return febonnacci(n - 1) + febonnacci(n - 2)
def hanota(n, x, y, z):
"""
漢諾塔算法:
:param n: 總共有n個盤子
:param x: x柱子
:param y: y柱子
:param z: z柱子
:return:
"""
if n == 1:
print("第1個盤子從 " + x + " 移動到 " + z)
else:
hanota(n - 1, x, z, y) # 將前n-1個盤子從a移動到b上
# print(x, "移動到", z) # 將最底下的最後一個盤子從a移動到c上
print("第" + str(n) + "個盤子從 " + x + " 移動到 " + z) # 將最底下的最後一個盤子從a移動到c上
hanota(n - 1, y, x, z) # 將b上的n-1個盤子c上
if __name__ == '__main__':
result = febonnacci(2)
print("斐波那契數列結果為:", result)
hanota(2, "x", "y", "z")