# 递归
# 3! = 1*2*3
# n! = 1*2*3*........*n-1*n
# n! = n * (n-1)! = n * (n-1) * (n-2)! = ...... = n * (n-1) * (n-2) * ...... * 2 * 1
# 那么如何用函数来实现数学中的阶乘呢
# def test(a):
# for item in range(1, a+1):
# print(item)
# test(3)
# 通过上面函数我们实现了a 值 1——a 的罗列
def test(n):
res = 1
for item in range(1, n+1):
res = res *item
return res
print(test(4))
# 上面这是非递归方式,下面试试递归
def test1(a):
if a == 1:
return a
else :
return a * test1(a-1)
print(test1(4))
# 注意,递归需要一个跳出的条件,就像上面的if a == 1: return a 这就是递归的跳出条件
# 斐波那契数列
def fblq(li):
if li == 0 or li== 1:
return 1
else:
return fblq(li -1) + fblq(li - 2)
for i in range(20):
print(fblq(i),end=',')
def hanoi(n, x, y, z):
if n == 1:
print(x, '————>', z) # 如果只有一层,那么从x直接移动到z就行
else:
hanoi(n - 1, x, z, y) #将前n-1层从x移动到y(以z为跳板)
print(x, '————>', z) #将最底层从x移动到z
hanoi(n - 1, y, x, z) #将y上的n-1层移动到z(以x为跳板)
n = int(input('请输入汉诺塔层数:'))
hanoi(n, 'x', 'y', 'z')
时间仓促,就直接上程序了,要说的都在注释里了,万望海涵。