zoukankan      html  css  js  c++  java
  • Python函数(三)

    递归函数

    在函数内部,可以调用其他函数,如果一个函数的内部调用了自己本身,那么这个函数就是递归函数。

    什么?函数还可以自己调用自己?那不是一个死循环吗?请看下例:

    # 求1-100的和
    
    def sum_num(n):
        result = 0
        for i in range(1, n+1):
            result += i
        return result
    
    sum_num(100)
    

    会不会感觉很繁琐,如果使用递归函数来实现会不会简单些?

    def sum_num(n):
        if n <= 0:
            return 0
        return n + sum_num(n-1)
    
    sum_num(100)
    

    分析一下代码,当n小于等于0的时候,直接给出和值为0,这句不能省。当n大于0时,结果是n加上sum_num(n-1)。这里的sum_num(n-1)又是一次sum_num函数的调用,不过参数的值变成了n-1,要得sum_num(n)到的值就必须等待sum_num(n-1)的值被计算出来,同样要得到sum_num(n-1)的值必须等待sum_num(n-2)的值,如此一路推算下去,直到sum_num(0),因为if语句的存在,它不需要等待sum_num(-1)的计算了,而是直接给出结果0。然后程序一路返回,直到回到最初的sum_num(n),并给出最终结果。

    递归核心思想: 每一次递归,整体问题都要比原来减小,并且递归到一定层次时,要能直接给出结果。

    函数的预解析

    在Python语言中,我们知道Python是一门脚本语言,类似于JavaScript之类的语言,那么让我们一起了解一下Python函数的预解析吧。

    函数的执行过程
    
    def func():
        pass
    

    上面函数,如果我们在函数定义前调用函数,会出现什么结果?(报错) 那么问题来了?

    def main():
        func()
    
    def func():
        pass
    
    main()
    

    本例子中,我们发现调用main()函数时,func()函数也被调用了,并无异常。这是为什么?

    因为在代码执行的过程中,Python会扫描代码,发现main()函数被调用,那么执行main()函数,main()函数内func()函数被调用,继续执行func()函数。

  • 相关阅读:
    j2ee四大作用域pagecontext,request,session,ServletContext(转)
    ActionErrors 使用说明 struts1 validate 处理流程 详细教程(转)
    Structs1 -配置例子(转)
    2016年3月19日 培训复习
    抽象类中的抽象方法也是默认public的么(类似于interface)?
    积分商城1期设计
    积分商城1期设计
    android使用模拟机测试时,若要联网IP地址该怎么写?
    JS和CSS压缩部署,提高访问效率
    JS和CSS压缩部署,提高访问效率
  • 原文地址:https://www.cnblogs.com/liudemeng/p/12258998.html
Copyright © 2011-2022 走看看