python-递归
python-递归
http://www.cnblogs.com/pythonxiaohu/articles/5555192.html
递归
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
(1)递归就是在过程或函数里调用自身;
(2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
递归算法一般用于解决三类问题:
(1)数据的定义是按递归定义的。(比如Fibonacci函数)
(2)问题解法按递归算法实现。(回溯)
(3)数据的结构形式是按递归定义的。(比如树的遍历,图的搜索)
递归的缺点:递归算法解题的运行效率较低。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。
进去多少层级,退出多少层级: def calc(n): print(n) if n/2 > 1: res = calc(n/2) print ('res',res) print ('N',n) return n calc(10) /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /Users/admin/PycharmProjects/s18/day3/naozi.py 10 5.0 2.5 1.25 N 1.25 res 1.25 N 2.5 res 2.5 N 5.0 res 5.0 N 10 进程已结束,退出代码0
斐波那契数列
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368
def func(arg1,arg2,stop): if arg1 == 0: print(arg1,arg2) arg3 = arg1 + arg2 print(arg3) if arg3< stop: func(arg2,arg3,stop) func(0,1,500) /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /Users/admin/PycharmProjects/s18/day3/naozi.py 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610