python之匿名函数与递归函数

一、匿名函数

匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数,只需用表达式而无需申明。(省略了用def声明函数的标准步骤)

匿名函数的定义和调用

计算两个数的和
在这里插入图片描述
匿名函数的应用示例
在这里插入图片描述

匿名函数实例

问题描述: 有一个整数列表(10个元素), 要求调整元素顺序,把所有的奇数放在前面,偶数放在后面。
实现如下:

import random
li = []
for i in range(10):
    li.append(random.randint(1,100))

print(sorted(li, key=lambda x: 1 if x % 2 == 0 else 0))

在这里插入图片描述

二、递归函数

已知: 函数可以调用函数。结论: 一个函数在内部调用自己本身,这个函数就是递归函数。

递归函数的经典实例

1、 计算阶乘 factorial: n! = 1 * 2 * 3 * … * n
具体实现代码

def recursive_factorial(num):
    """
    使用递归求num的阶乘
    """
    # 如果num等于0或者1, 返回1;
    if num ==1 or num == 0:
        return 1
    # num的阶乘为num*(num-1)!
    else:
        return num * recursive_factorial(num - 1)

print("2的阶乘: ", recursive_factorial(2))
print("0的阶乘: ", recursive_factorial(0))

在这里插入图片描述
2、斐波那契数列(Fibonacci sequence)的实现,F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
具体实现和结果

def f(n):
    if n <= 2:
        return 1
    else:
        return f(n - 1) + f(n - 2)

print(f(4)) #输出菲波那契数列的第4个
print(f(6)) #输出菲波那契数列的第6个

在这里插入图片描述
3、汉诺塔问题
在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。
具体实现和结果如下:

moveCount = 0
def hanoi(n, a='A', b='B', c='C'):
    """
    :param n:盘子个数
    :param a:初始塔
    :param b:缓存塔
    :param c:目标塔
    :return:移动次数
    """
    if n == 1:
        global moveCount
        moveCount += 1
        print(a, "--->", c)
    else:
        hanoi(n - 1, a, c, b)
        hanoi(1, a, b, c)
        hanoi(n - 1, b, a, c)
hanoi(3)
print("移动次数:", moveCount)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值