python中高阶函数实现剪枝函数的方法

本文主要为大家详细介绍了python利用高阶函数实现剪枝函数的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。

案例:

       某些时候,我们想要为多个函数,添加某种功能,比如计时统计,记录日志,缓存运算结果等等

       需求:

              在每个函数中不需要添加完全相同的代码

立即学习“Python免费学习笔记(深入)”;

如何解决?

       把相同的代码抽调出来,定义成装饰器

              求斐波那契数列(黄金分割数列),从数列的第3项开始,每一项都等于前两项之和

         求一个共有10个台阶的楼梯,从下走到上面,一次只能迈出1~3个台阶,并且不能后退,有多少中方法?

       上台阶问题逻辑整理:

              每次迈出都是 1~3 个台阶,剩下就是 7~9 个台阶

                     如果迈出1个台阶,需要求出后面9个台阶的走法

                     如果迈出2个台阶,需要求出后面8个台阶的走法

                     如果迈出3个台阶,需要求出后面7个台阶的走法

              此3种方式走法,通过递归方式实现,递归像树,每次递归都生成子节点函数

以上两个问题通过递归来解决,就会出现一个问题,出现重复求解问题,把重复求解的过程剔除掉,在c++语言中称为剪枝函数

#!/usr/bin/python3def jian_zhi(func):  # 中间字典,判断已经是否求解过  median = {}  def wrap(*args):    # 假如不在中间字典中,说明没有求解过,添加到字典中去,在的话,直接返回    if args not in median:      median[args] = func(*args)    return median[args]  return wrap@jian_zhidef fibonacci(n):  if n  0:    # 对三种情况进行分别处理momo    for step in steps:      count += climb(n-step, steps)         # 返回每次递归的计数  return count if __name__ == '__main__':  print(climb(10, (1, 2, 3)))  print(fibonacci(20))

登录后复制

所谓的剪枝函数不过是保证每次递归的函数唯一性,利用中间字典保存已经执行过得函数和参数,通过判断参数,剔除重复的函数调用。

以上就是python中高阶函数实现剪枝函数的方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2265504.html

(0)
上一篇 2025年2月27日 08:45:05
下一篇 2025年2月26日 02:44:20

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python之yeild的定义及使用方法

    yeild简单来说就是一个生成器,生成器是这样一个函数,它记住上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用跳转至该函数中间,而上次调用的所有局部变量都保持不变。 生成器是一个函数 函数所有的参数都会保留 第二次调用此函…

    编程技术 2025年2月27日
    200
  • Python之爬取其他网页

    本文主要为大家分享一篇Python之爬取其他网页的请求方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧,希望能帮助到大家。 简单的说就是寻找网页中的超链接‘href’,之后将相对网址转变为绝对网址,在用for循环访问他 …

    编程技术 2025年2月27日
    200
  • 如何完整写一个爬虫框架

    本文主要为大家分享一篇如何完整写一个爬虫框架的请求方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧,希望能帮助到大家。 产生爬虫框架: 1、建立一个scrapy爬虫工程 2、在工程中产生一个scrapy爬虫 3、配置sp…

    2025年2月27日 编程技术
    200
  • python操作文件方法

    本文主要和大家介绍了python操作文件,以及简单的复制备份. 希望能帮助到大家。 1.open函数 python中一切皆对象,所以正常我们打开一个文件的过程是 1.选中文件-打开文件-编辑,复制,删除等操作-关闭文件 放到python中用…

    编程技术 2025年2月27日
    200
  • Linux环境使用pdb调试python的方法

    pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令。        pd…

    编程技术 2025年2月27日
    200
  • vscode无法调试python怎么解决

    本文主要和大家分享vscode无法调试python怎么解决,希望能帮助到大家。 vscode无法调试python问题 提示调试适配器出错 1、保证已安装python调试插件,并升级到最新版本。 2、查看Python版本,升级到最新版本。 3…

    编程技术 2025年2月27日
    200
  • Python语法基础详解

    本文主要和大家分享python语法基础详解,希望能帮助到大家。 Python注释 ”’多行注释”’井号单行注释 登录后复制 python2在文件中存在中文的情况下,必须加以理(两种方式) 在文件头加上#coding=utf-8 在文件头…

    编程技术 2025年2月27日
    200
  • python编程的一些习惯

    本文主要和大家分享python编程的一些习惯,主要以代码的方式和大家讲解,希望能帮助到大家。 1、写好程序文档(格式、自动缩进(vim设置行宽和autoindent)、注释)如下形式: 2、尽量精简代码: 如     可以写成: retur…

    2025年2月27日
    100
  • python动态爬虫的实例分享

    本文主要和大家分享python动态爬虫的实例分享,用Python实现常规的静态网页抓取时,往往是用urllib2来获取整个HTML页面,然后从HTML文件中逐字查找对应的关键字。如下所示: #encoding=utf-8 登录后复制 imp…

    2025年2月27日 编程技术
    200
  • Python解析JSON的实例分享

    本文主要和大家分享Python解析JSON的实例,主要以代码的形式和大家讲解,希望能帮助到大家 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。Python 使用 JSON 函…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论