zoukankan      html  css  js  c++  java
  • day7-2

    函数在执行过程中只要遇到return 语句就会停止执行并返回结果

    如果一个函数没有return 语句,那么他返回值为none

     递归:

    特性:

    1.必须有一个明确的的结束条件

    2.每次进入更深一层的递归的时候,问题规模相对上一次减少

    3.递归效率不高,递归层次过多会导致栈溢出(计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一成栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的。所以递归的次数过多,会导致栈溢出)

    一:栈溢出

    1 def calc(n):
    2     print(n)
    3     return calc(n+1)
    4 
    5 calc(0) 
    6 # 没有明确结束条件,函数栈溢出。因为函数被调用,返回一个函数,
    7 #进入第二层,如果第二层结束了,第一层也就结束了,但第二层需要等待第三层结束,所以栈溢出

    二:递归:(考虑结束条件,和初始条件,不考虑中间过程)

     1 def calc1(n):
     2     print(n)
     3     if n // 2 > 0:
     4         return calc1(n // 2)
     5     print("->",n)
     6 
     7 calc1(10)
     8 
     9 
    10 # =============================================================================
    11 # 10
    12 # 5
    13 # 2
    14 # 1
    15 # -> 1
    16 # =============================================================================

    函数式编程: 函数是面向过程程序设计的基本单元。在计算机层次上,汇编语言是最接近计算机的语言。而函数式编程是一种抽象程度很高额编程范式。纯碎的函数式编程编写的函数是没有变量的

    python并不是纯碎的函数式编程。函数式编程指的是数学意义上的x,y ,不是之前python中学的函数

    高阶函数

    变量可以指向函数,函数的参数能接受变量,那么一个函数可以接受另一个函数作为参数,这种函数就称为高阶函数

     1 def calc(x,y,f):
     2     "add"
     3     return f(x)+f(y)
     4 
     5 def fun(x):
     6     if x < 0:
     7         return -x
     8     else:
     9         return x   # abs求绝对值
    10 
    11 print(calc(-10,5,fun))
    12 
    13 # =============================================================================
    14 # 15
    15 # =============================================================================
  • 相关阅读:
    实例化对象
    面向对象
    合并类动态规划——石子合并(洛谷1880)
    合并类动态规划——能量项链(洛谷1063)
    multiplicationoverview
    cadence 工艺库各文件夹所包含的内容
    C语言读入文件的函数列举
    一篇工程师的感悟(转载)
    验证汇总一些缩写代码含义
    Verilog代码覆盖率检查
  • 原文地址:https://www.cnblogs.com/yfjly/p/9727240.html
Copyright © 2011-2022 走看看