一、递归是什么
函数调用自身的过程叫递归
def recursion():
return recursion()
这个例子会无限调用自身函数。
例:阶乘
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 fab(n):
n1=1
n2=1
n3=1
if n<1:
print('输入有误')
return -1
while (n-2)>0:
n3=n2+n1
n1=n2
n2=n3
n-=1
return n3
result=fab(20)
if result!=-1:
print('总共有%d对小兔崽子诞生'% result)
递归实现
def fib(n):
if n<1:
print('输入有误')
return -1
if n==1 or n==2:
return 1
else:
return fib(n-1)+fib(n-2)
result=fib(20)
if result!=-1:
print('总共有%d对小兔子'%result)
三、汉诺塔
def hanoi(n,x,y,z):
if n==1:
print(x,'-->',z)
else:
hanoi(n-1,x,z,y)
print(x,'-->',z)
hanoi(n-1,y,x,z)
n=int(input('请输入汉诺塔层数:'))
hanoi(n,'x','y','z')