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

 

posted on 2017-08-31 10:48  光阴8023  阅读(109)  评论(0编辑  收藏  举报