特点
递归算法是一种直接或间接地调用自身算法的过程。
递归算法解决问题的特点:
(1)递归就是过程或函数里调用自身。
(2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3)递归算法解题通常显得很简洁,但递归算法解题运行效率较低。所以一般不提倡用递归算法设计程序
(4)在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。
要求
递归算法所体现的“重复”一般有三个要求:
一是每次调用在规模上都有所缩小(通常是减半)
二是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次输入)
三是在问题的规模极小时必须用直接给出解答而不再进行递归调用,
代码:
def calc(n):#进去多少层退出多少层
print(n)
if n/2 > 1:
res = calc(n/2)
print(‘res:’,res)
print(“N:”,n)
return n
calc(10)
递归实现斐波那契数列:
def fibs(arg1,arg2,stop):
if arg1 == 0:
print(arg1,arg2)
arg3 = arg1 + arg2
print(arg3)
if arg3 < stop:
fibs(arg2,arg3,stop)