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
浙公网安备 33010602011771号