程序员python 高级码农成才之路

*禁白嫖*python----递归函数匿名函数

2021-01-26  本文已影响0人  幼姿沫

常理推断,特别是解释型语言,当程序执行函数内部的语句时,

这个函数还没有定义完,没定义完怎么可以调用本身呢。

但实质上,当你执行函数内部的语句时,

一定有函数外部的语句调用了这个函数,

此时该函数的所有代码和语句,已经在内存中形成了逻辑,

这就是递归函数的原理。

首先将一个既定规则进行数学函数定义 之后直接进行函数调用即可

函数嵌套是调用其他函数 但是递归函数是调用自身函数 即数学函数定义


#函数规则 阶乘的规律 n! = n × (n-1)!

def sumAll(num):

    if num>=1:

        result=num * sumAll(num-1)

    else:

        result=1

    return result

ret=sumAll(10)

print(ret)


#f(n) = (f(n-1) + 1)*2 在函数外部定义的规则直接进行自身调用即可

def f(n):

    if n==1:

        return 1

    else:

        return (f(n-1)+1)*2

print(f(10))


#分解质因数 分解到不能分解的数字 定义函数名称为defactor 用来返回N的所有因子

def defactor(N):

    for iin range(2,N):

#从2开始尝试 如果试到i是N的因子则返回i的所有因子和N/i的所有因子的列表

        if N % i ==0:

            return defactor(i)+defactor(int(N/i))

else:

#如果没有试到就说明N是一个质数,就直接包含他的列表

        return [N]

print(defactor(980))

匿名函数

#普通函数求多个数值的和

def sum(a,b,c,d):

    return a+b+c+d

print(sum(1,2,3,4))

'''

lambda函数求多个数值的和

lambda表达式冒号前面本身是函数参数

冒号后面是接收表达式即为返回值

'''

a=lambda a,b,c,d:a+b+c+d

print(a(1,2,3,4))

匿名函数 lambda 得益于省略了定义def函数的步骤

sum=lambda a,b : a+b

print(sum(10,20))

#匿名函数可以接收任意数量的参数只能返回一个表达式的值

#匿名函数不能直接调用print 因为lambda需要一个表达式

函数作为参数进行传递

def fun(a,b,opt):

    print(a,b,opt(a,b))

fun(1,2,lambda x,y:x+y)

#无参匿名函数

def ttt():

    return True

print(ttt())

a=lambda:True

print(a())

#首先用split将字符串转化为列表 然后用''.join()进行分隔开

s='this is \n a \t test'

print(' '.join(s.split()))

#匿名函数来处理有空格的字符串

s1=lambda s:' '.join(s.split())

print(s1('this is \n a \t test'))

#有参数的匿名函数

def sum(a,b,c):

print(a+b+c)

sum(1,2,3)

aa=lambda a,b,c:a+b+c

print(aa(1,2,3))

禁白嫖的含义就是

 尊重我的劳动成果  点赞 打赏 转发 谢谢您各位捧场

上一篇下一篇

猜你喜欢

热点阅读