Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

函数的回调和递归函数 #118

Open
Qingquan-Li opened this issue Apr 18, 2019 · 0 comments
Open

函数的回调和递归函数 #118

Qingquan-Li opened this issue Apr 18, 2019 · 0 comments
Labels

Comments

@Qingquan-Li
Copy link
Owner

Qingquan-Li commented Apr 18, 2019

参考:函数的回调和递归函数:https://www.jianshu.com/p/8606f789b468?from=singlemessage&isappinstalled=0

回调函数参考:JavaScript函数-回调函数

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

递归的应用场景:遍历整个文件目录的结构、网络爬虫遍历整个网站的链接等。

Python 递归函数示例1:

def sum_numbers(num):
    print(num) # 分别打印:3、2、1
    # 递归出口。没有递归出口,可能导致死循环致程序中断。
    # 程序到达出后后,函数的调用才能一层一层地返回,一直返回到最初调用的位置:sum_numbers(3)
    # Python默认的递归(程序递归地自我调用次数)限制是1000次。
    if num == 1:
        return
    sum_numbers(num-1)
sum_numbers(3)

代码的执行流程图:
递归函数执行流程图



Python 递归函数示例2:

def sum_numbers(num):
    print(num) # 断点调试分别输出:3、2、1
    if num == 1:
        return 1
    # 满足条件num==1,把1作为函数的返回值,返回到上次调用函数的位置:sum_numbers(num -1 )
    temp = sum_numbers(num - 1)
    print('===============')
    print(temp) # 断点调试分别输出:1、3
    print('===============')
    print(temp + num) # 断点调试分别输出:3、6
    return temp + num
print(sum_numbers(3)) # 打印出6

代码的执行流程图:
相加递归函数执行流程图

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant