递归是神马
- 写一个阶乘函数:
普通方式:
def n(x):
result = x
for i in range(1, x):
result *= i
return result
print(n(5))
递归方式:
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
number = int(input("请输入一个正整数:"))
result = factorial(number)
print("%d 的阶乘是:%d" % (number, result))
菲波那切数列
- 用代码实现斐波那契数列
迭代方法
# 迭代
def f(n):
result = 0
item_pri = 1 # n为1时的函数值
item_rare = 1 # n为2时的函数值
if n in [1, 2]:
result = 1
else:
while n - 2 > 0:
result = item_pri + item_rare
item_pri = item_rare
item_rare = result
n -= 1
return result
递归方法
# 递归
def F(n):
if n in [1,2]:
result = 1
else:
result = F(n - 1) + F(n - 2)
return result
- 汉诺塔游戏(hanoi)
def hanoi(n, x, y, z):
if n == 1:
print(x, '->',z)
else:
hanoi(n - 1,x, z, y)# 将前n - 1个盘子从x移动到y上
print(x, '->',z) # 将最底下的盘子移动到z上'
hanoi(n - 1, y, x, z)# 将y上的n - 1个盘子移动到z上
n = int(input("请输入汉诺塔的层数:"))
hanoi(n, 'x', 'y', 'z')