基础
- 定义:函数调用自身
def recursion():
return recusion
理论上函数无限调用,python设置深度最多100次
- 修改递归最大深度
import sys
sys.setrecursionlimit(120)
实例
递归求阶乘
递归方法:
def factorial(n):
if n==1:
return 1
else:
return n*factorial(n-1)
递归就是一层一层调用自身,到某个条件结束!
迭代方法:
def factorial(n):
result=1
for i in range(1,n+1):
result*=i
return result
- 递归的危险性较大,消耗内存大,效率低,容易出错。应谨慎使用,用在恰到好处的地方。比如上面的阶乘就没必要用递归。
十进制转二进制
使用递归编写一个十进制转换为二进制的函数(要求采用“取2取余”的方式,结果与调用bin()一样返回字符串形式)
def Dec2Bin(dec): #dec十进制,bin二进制
result = ''
if dec:
result = Dec2Bin(dec//2)
return result + str(dec%2)
else:
return result
斐波那契数列(递归有两个返回值)
迭代方法:
def fb(n): #n>2且为整数
n1=n2=1
for i in range(n-2):
n3=n1+n2
n1=n2
n2=n3
return n3
递归方法:
def fb(n): #n>2且为整数
if n==1 or n==2:
return 1
else:
return fb(n-1) + fb(n-2)
分支思想,不会可以画分解树形图