提升Python效率——用循环机制代替递归函数!

提升Python效率之使用循环机制代替递归函数 主要介绍了提升Python效率之使用循环机制代替递归函数的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 立即下载

 斐波那契数列

当年,典型的递归题目,斐波那契数列还记得吗?

def fib(n):
    if n==1 or n==2:
        return 1
    else:
        return fib(n-1)+fib(n-2)

当然, 为了程序健壮性,加上 try...except...

Python资源共享群:484031800

def fib(n):
    if isinstance(n, int):
        print('兄弟,输入正整数哈')
        return
    
    try:
        if n==1 or n==2:
            return 1
        elif n <= 0:
            print('兄弟别输入0或负数呀')
        else:
            return fib(n-1)+fib(n-2)
    except RecursionError:
        print('兄弟,超过了最大递归深度'

是的,无论时间还是空间复杂度,递归真的是不太好使哈!这是递归的写法:

def fib(n):
    if n==1 or n == 2:
        return 1
    a, b = 1, 1
    for i in range(2, n):
        a, b = b, a+b
    return b

我稍微解释三点:

  • 为啥是 range(2, n) ,因为,斐波那契数列从 1 开始,所以 fib(n) 就是数列的第 n 项
  • 由于前两项都为 1 ,所以要少两项,为 range(2, n) (要循环 n-2 次)
  • a, b = b, a+b 这里你也许也有困惑,我简单说说,一般Python解释器会将逗号分隔的变量直接看做一个元组,
  • 又因为,解释器先执行等式右边的,所以,这样相当于 元组拆包
  • a, b = b, a+b 这句话的精髓在于,在等式右边将 b 视为 fib(n-2) ,将 a+b 视为 fib(n-1)

杨辉三角

同样,先写递归写法(我这里不考虑特殊情况了,时间有限):

def YH_tri(a, b):
    if a == b or b == 0:
        return 1
    else:
        return YH_tri(a-1, b)+YH_tri(a-1, b-1)

老铁们自己先想想该怎么写??

信道估计之MMSE算法 信道估计之MMSE算法前言MMSE估计的原理总结 前言        前篇分析了LS信道估计算法,也说明了由于没有考虑SNR的影响,所以LS算法不适合在低信噪比的情况下使用。本篇来学习信道估计的另外一种常用的算法–MMSE。        为什么说LS没有考虑噪声大小的情况呢,因为LS算法使用的是实际观测量与估计观测量的误差,这并不能精确的代表估计量的真值与估计值的误 阅读详情

相关推荐

论文阅读—Square Attack: a query-efficient black-box adversarial attack via random search

论文阅读—Square Attack: a query-efficient black-box adversarial attack via random search 发表位置 ECCV 2020 摘要 作者提出了一种基于得分的黑盒Square attack,该模型不依赖于模型的局部梯度信息,因此可以绕过梯度隐藏防御攻击。Square Attack是一种随机搜索方法,它在随机位置选择局部的方形更新,使得每次迭代时扰动近似位于可行集的边界。 背景 当涉及到对安全至关重要的机器学习应用时,对抗性的例子尤其值得

yayayamaomaoya的博客 2493

递归转非递归的栈方法

递归转非递归

tree123tree123的博客 3011

drm 之modes

#define _GNU_SOURCE #include <errno.h> #include <fcntl.h> #include <stdbool.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/mman.h> #include <time.h&...

u012794472的专栏 3718

CPP:把for改写成递归形式的小技巧()

前言:考试的时候(或者平常)可能都会遇到DFS啦各种递归啦之类的算法。我们老师说的好:只要你会了for和DFS,就能拿省一。于是我就开始思考DFS和for之间的关系,总结了一下改写的小技巧。 简单介绍: for循环其实绝大部分可以改写成递归形式,在不考虑空间复杂度的形况下,把for改写成递归形式的好处就是可以很方便的调试代码(不然你发现你代码写错了,拖着一撮for上下乱跑,大括号你都对应不起来了就),还能便捷的把for改成n层for(forrer,比for...

qq_50115621的博客 1526

数学建模 种群竞争模型 学习笔记

模型背景 应用场景 种群竞争模型 例如 s1=0.5,则表示对于供养甲的资源来讲,单位数量的乙的消耗为单位数量的甲的0.5倍,即表示乙对于该资源的占有能力是甲的0.5倍(即竞争力弱) 仿真结果及分析 (1)设置自然增长率 r1=r2=1 (2)改变自然增长率 r1=r2=0.3 (3)修改甲和乙的最大容量 n1=10000, n2=100 (4)修改甲和乙的初始数量 x1=10, x...

Test_tju的博客 2028

Synopsys PCIe IP Loopback功能深度解析与应用实践

本文深入解析了Synopsys PCIe IP的Loopback功能,包括本地数字环回和远程环回两种模式的应用实践。通过详细的寄存器配置步骤和实战案例,帮助开发者快速掌握PCIe芯片验证与调试技术,提升系统开发效率。特别适合PCIe协议相关的硬件工程师和验证工程师参考。

weixin_29198045的博客 530

python函数教程:提升Python效率之使用循环机制代替递归函数

这篇文章主要介绍了提升Python效率之使用循环机制代替递归函数的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 斐波那契数列 当年,典型的递归题目,斐波那契数列还记得吗? def fib(n): if n==1 or n==2: return 1 else: return fib(n-1)+fib(n-2) 当然, 为了程序健壮性,加上...

python函数学习教程 1663

YOLOv11的QAT(训练感知量化)实战

本文总结了YOLO模型量化感知训练(QAT)的实践要点:QAT通过模拟量化噪声训练模型,比训练后量化(PTQ)更适合密集预测任务。关键实现包括:1)配置对称/非对称量化器;2)排除检测头量化;3)调整学习率策略并添加量化正则;4)选择困难样本校准;5)转换前稳定BN统计量。调试时需检查量化范围、数值分布和逐层突变,并注意SPP等敏感层。建议小模型使用QAT,大模型可能适得其反,且TensorRT的FP16模式可能优于INT8-QAT。量化应以功能正确为前提,避免过度优化。

as1225120794的博客 510

python递归写法_Python 递归代替循环

Python 递归代替循环语句,函数式编程不依赖循环语句,也不产生跟踪循环状态的开销,而使用相对简单的递归语句。在一些语言中,代码中的递归会在编译阶段被编译器通过尾调用优化(tail call optimization,TCO)技术转换成循环语句。本节简单介绍一些递归用法。接下来介绍如何通过遍历测试一个数是否为质数。质数是只能被1和本身整除的自然数。我们可以定义一个简单的低性能算法,检查2到这个数...

weixin_39710991的博客 672

【FISCO BCOS】二十、多机部署区块链

实际开发中,为了满足高可用性和高容错性的需求,往往会采用多级部署区块链的方式,今天介绍一下FISCO BCOS的多机部署流程。

naihe_fish的博客 3651

3.7 改造模型:为GPT添加一个分类头(Classification Head)

本文介绍如何改造GPT模型用于文本分类任务。主要内容包括: 分类头设计思路:GPT作为语言模型需要添加分类头才能适应分类任务,类似于为语言大师添加裁判功能。 序列表示选择策略: 分析三种常见方法(CLS标记、平均池化、最后词元表示) 推荐使用最后词元表示,因其最能反映GPT的单向信息流特性 代码实现: 构建GPT2ForSequenceClassification类 包含预训练GPT主体和线性分类头 使用attention_mask智能定位句子结尾 通过高级索引提取最后词元特征 该方法通过简单改造使GPT模

yonggeit的博客 2971

python负数重新循环_提升Python效率——用循环机制代替递归函数!

斐波那契数列当年,典型的递归题目,斐波那契数列还记得吗?def fib(n):if n==1 or n==2:return 1else:return fib(n-1)+fib(n-2)当然, 为了程序健壮性,加上 try...except...Python资源共享群:484031800def fib(n):if isinstance(n, int):print('兄弟,输入正整数哈')return...

weixin_39535125的博客 173

【AI智能体】Skills 智能体驱动开发从使用到项目实战详解

Skills 智能体驱动开发从使用到项目实战详解

congge 6606

python基础编程:提升Python效率之使用循环机制代替递归函数

这篇文章主要介绍了提升Python效率之使用循环机制代替递归函数的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 斐波那契数列 当年,典型的递归题目,斐波那契数列还记得吗? def fib(n): if n==1 or n==2: return 1 else: return fib(n-1)+fib(n-2) 当然, 为了程序健壮性,加上...

python基础编程开发教程 1291

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python 递归函数与循环的区别_提升Python效率之使用循环机制代替递归函数

斐波那契数列当年,典型的递归题目,斐波那契数列还记得吗?def fib(n):if n==1 or n==2:return 1else:return fib(n-1)+fib(n-2)当然, 为了程序健壮性,加上try...except...def fib(n):if isinstance(n, int):print('兄弟,输入正整数哈')returntry:if n==1 or n==2:re...

weixin_39797686的博客 204

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python循环10次函数_提升Python效率之使用循环机制代替递归函数

斐波那契数列当年,典型的递归题目,斐波那契数列还记得吗?def fib(n):if n==1 or n==2:return 1else:return fib(n-1)+fib(n-2)当然, 为了程序健壮性,加上try...except...def fib(n):if isinstance(n, int):print('兄弟,输入正整数哈')returntry:if n==1 or n==2:re...

weixin_39559097的博客 260

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

用Python轻松实现斐波那契数列——递归函数详解!

通过本篇文章,我们学习了Python递归函数的基本概念和实现方法,同时也掌握了斐波那契数列的常规和优化算法。如果你对于递归算法的理解更深了,那么对于其他匹配问题、遍历问题及分治问题,都将更加得心应手。

canshanyin的博客 1万+

python递归函数打印三角_提升Python效率——用循环机制代替递归函数

提升Python效率——用循环机制代替递归函数

weixin_39739846的博客 193

python 递归函数与循环的区别_python函数 之 提升Python效率之使用循环机制代替递归函数...

斐波那契数列当年,典型的递归题目,斐波那契数列还记得吗?def fib(n):if n==1 or n==2:return 1else:return fib(n-1)+fib(n-2)当然, 为了程序健壮性,加上 try…except…def fib(n):if isinstance(n, int):print('兄弟,输入正整数哈')returntry:if n==1 or n==2:retur...

weixin_39938165的博客 148

python递归函数的使用方法及实例_Python 递归函数详解及实例

Python 递归函数如果一个函数体直接或者间接调用自己,那么这个函数就称为递归函数.也就是说,递归函数体的执行过程中可能会返回去再次调用该函数.在python里,递归函数不需要任何特殊的语法,但是它需要付出一定的努力去理解和创建.我们会以一个简单的例子开始:写一个函数求一个自然数中所有数字的和.在设计递归函数的时候,我们会寻找能把问题分解成简单的问题的方法.在这道题中,运算符%和//可以用来把一...

weixin_29192141的博客 2864

Python编程技巧提升代码效率的实用方法

例如,当需要频繁检查元素是否存在时,使用集合的O(1)时间复杂度比列表的O(n)更高效。此外,使用collections模块中的deque实现队列操作,比列表的pop(0)操作快得多。NumPy的向量化操作避免了Python循环的开销,Pandas提供了优化的数据结构和数据处理方法。循环是Python中常见的性能瓶颈。此外,考虑使用内置函数如map、filter替代显式循环,这些函数由C实现,执行效率更高。向量化操作利用底层优化,一次性处理整个数组,避免了Python解释器的开销和循环控制结构的成本。

zmAXhiSV的博客 357

Python编程实战十个提升代码效率的技巧与案例

Python内置了许多高效函数和模块,如map、filter、zip等,它们底层由C实现,执行速度比纯Python循环更快。因为局部变量的查找成本低于全局变量。对于高并发的I/O操作,使用asyncio异步编程可以极大提升效率,通过事件循环和非阻塞I/O实现单线程内并发处理成千上万个连接。利用生成器的惰性求值特性,可以推迟计算直到真正需要结果时,避免不必要的中间计算和存储,特别适合处理大数据管道。通过装饰器缓存函数结果,当相同参数再次传入时直接返回缓存值,特别适合计算费时的确定性函数,如动态规划问题。

riyuexingchen_的博客 261

24 个让 Python 加速的好方法!

源 /Python与算法之美 文 /梁云1991一,分析代码运行时间第1式,测算代码运行时间平凡方法快捷方法(jupyter环境)第2式,测算代码多次运行...

机器学习算法与Python学习 1524

24招加速你的Python,超级实用!

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达云哥前期从以下九个方面讨论了加速Python的具体方法,一共24个,每个都带有优化前后的对比,非常实用。分析代码运行时间加速查找加速循环加速函数实用标准库加速Numpy向量化加速加速PandasDask加速多线程多进程加速我在此基础上主要美化了编辑,方便读者更容易阅读学习。“一 、分析代码运行时间”1 测算代码单次运行时间平凡法...

小白学视觉 2644
上一篇: 零基础能学Python编程吗 Python就业市场怎样!
下一篇: 下百度文库要券?来用 Python 自动下!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值