前言
本章主要讲述 【用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")