当前位置: 首页 > article >正文

初识递归算法

目录介绍例PythonC原理优缺点分析题目结尾本文由Jzwalliser原创发布在CSDN平台上遵循CC 4.0 BY-SA协议。因此若需转载/引用本文请注明作者并附原文链接且禁止删除/修改本段文字。违者必究谢谢配合。个人主页blog.csdn.net/jzwalliser介绍递归是一种算法即自己调用自己。可以是一个函​数自己调用自己即直接递归也可以是两个函​数相互调用即间接递归。递归​算法主要由两个部分组成递归操作及递归边​界。递归操作是函​数的主体部分负责执行运算、实现功能递归边​界即一个条件 满足条件后停止递归并返回上一层以避免程​序无​限递归下去而陷入死循环。例比如计算阶​乘就可以使用递归​算法来实现。n ! n × ( n − 1 ) × ( n − 2 ) × ⋯ × 2 × 1 n!n\times(n-1)\times(n-2)\times\cdots\times2\times1n!n×(n−1)×(n−2)×⋯×2×1例如5 ! 5 × 4 × 3 × 2 × 1 120 5!5\times4\times3\times2\times11205!5×4×3×2×1120。假设x xx的阶​乘用f ( x ) f(x)f(x)来表示x ∈ Z x\in\mathbb{Z_}x∈Z​那么f ( x ) { 1 ( x 1 ) x × f ( x − 1 ) ( x 1 ) f(x)\left\{ \begin{aligned} 1\space(x1) \\ x\times f(x-1)\space(x1) \\ \end{aligned} \right.f(x){​1(x1)x×f(x−1)(x1)​翻译为代​码如下。Pythondeff(x):ifx1:returnx*f(x-1)return1Clonglongintf(x){if(x1){returnx*f(x-1);}return1;}原理可以发现当调用f ( 5 ) f(5)f(5)时程​序就会递归调用f ( 4 ) f(4)f(4)并计算5 × f ( 4 ) 5\times f(4)5×f(4)然后再计算4 × f ( 3 ) 4\times f(3)4×f(3)…直到调用f ( 1 ) f(1)f(1)才终于撞到了边​界条件停止递归并返回1 11接着f ( 2 ) f(2)f(2)返回2 22f(3)返回6…直到f ( 5 ) f(5)f(5)返回120 120120。递归本质上是一种由系统自动维护的栈数据先进后出FILOFirst in Last out。可见第一个进去的f ( 3 ) f(3)f(3)最后一个出来而最后进去的f ( 1 ) f(1)f(1)第一个出来。优缺点分析递归的写法有许多好处。首先递归的代​码简洁可以用较少的代​码表达较复杂的过程。其次递归的效率还很高。但递归不是万能的。能写成递归形式的算法基本都可以写成非递归。且一个算法是否该用递归还需要考虑数据规模。如果数据规模太过巨大可能会导致递归几百万层最终爆栈。不过话说回来递归最深深度也取决于硬件、操作系统、编程语言等因素一般来说递归个几万层没多大问题。递归还有一个小缺点代​码太过简洁可能难以理解对初学者来说可能不太友好。题目有的题目用到了递归​算法洛谷 P1087 [NOIP2004 普及组] FBI 树洛谷 P1010 [NOIP1998 普及组] 幂次方结尾好啦今天的分享到此结束记得点赞收藏哦

相关文章:

初识递归算法

目录介绍例PythonC原理优缺点分析题目结尾本文由Jzwalliser原创,发布在CSDN平台上,遵循CC 4.0 BY-SA协议。 因此,若需转载/引用本文,请注明作者并附原文链接,且禁止删除/修改本段文字。 违者必究,谢谢配合。…...

Armv9 SME架构FMOP4A指令:混合精度矩阵运算优化

1. SME架构与FMOP4A指令概述 在现代处理器架构中,矩阵运算性能直接决定了AI推理和科学计算的效率。Armv9引入的SME(Scalable Matrix Extension)架构通过ZA瓦片寄存器和专用矩阵指令集,为浮点密集型计算提供了硬件级加速方案。其中…...

【配置】Navicat连接sqlServer

安装 - SQL Server Native Client | Microsoft Learn 1.如果没有ODBC驱动则先下载驱动 SQLServerNativeClient10-sqlncli-10-驱动-SQLServer文档类资源-CSDN文库 SQLServerNativeClient11-sqlncli-11驱动资源-CSDN文库 Download Microsoft SQL Server 2012 SP4 Feature Pack …...

反向散射通信:无电池物联网的低功耗革命

1. 反向散射通信技术演进概述十年前,当我第一次在实验室接触到RFID技术时,完全没想到这种简单的无线识别技术会演变成今天这样复杂的通信范式。反向散射通信(Backscatter Communication)已经从最初的射频识别工具,发展…...

stable diffusion秋叶整合包安装时报错No Python at ‘“D:\python\python.exe‘请按任意键继续. . .人工智能画画AI绘图报错解决

使用秋叶的stable diffusion整合包报错,原因是原先安装过python,后面卸载了,然后还有anaconda和一些其他软件有自带的python,我先在C盘搜索python,删除搜索到的所有文件,因为秋叶的整合包有python&#xff…...

从零到一:用Python+微分方程模拟传染病传播(以SIR模型为例)

从零到一:用Python微分方程模拟传染病传播(以SIR模型为例)在公共卫生领域,传染病传播模型一直是预测疫情发展趋势的重要工具。SIR模型作为经典的传染病动力学模型,通过微分方程组描述了易感者(S)、感染者(I)和康复者(R…...

从‘兔子’到‘钢板’:手把手教你用Open3D和Python为工业零件做‘表面体检’(附完整数据集)

从‘兔子’到‘钢板’:工业级点云缺陷检测实战指南当斯坦福大学的兔子点云模型在学术论文中反复出现时,许多工程师会产生一种错觉——似乎所有三维扫描数据都该如此干净规整。直到第一次拿到车间里沾满油污的金属件扫描结果,那些噪点、缺失和…...

如何快速为你的爱车添加自动驾驶:openpilot完整实战指南

如何快速为你的爱车添加自动驾驶:openpilot完整实战指南 【免费下载链接】openpilot openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300 supported cars. 项目地址: https://gitcode.com/GitHub_Trend…...

Redux Dynamic Modules最佳实践:避免常见错误的10个技巧

Redux Dynamic Modules最佳实践:避免常见错误的10个技巧 【免费下载链接】redux-dynamic-modules Modularize Redux by dynamically loading reducers and middlewares. 项目地址: https://gitcode.com/gh_mirrors/re/redux-dynamic-modules Redux Dynamic M…...

突破2GB限制:3种高效处理大型ONNX模型的智能方案

突破2GB限制:3种高效处理大型ONNX模型的智能方案 【免费下载链接】onnx Open standard for machine learning interoperability 项目地址: https://gitcode.com/gh_mirrors/onn/onnx ONNX作为机器学习模型交换的开放标准,在实际部署中常遇到模型文…...

AI by Hand Excel:在电子表格中实现损失函数与精度评估的完整指南

AI by Hand Excel:在电子表格中实现损失函数与精度评估的完整指南 【免费下载链接】ai-by-hand-excel 项目地址: https://gitcode.com/gh_mirrors/ai/ai-by-hand-excel 你是否想过,无需编写一行代码就能深入理解人工智能算法的核心原理&#xff…...

如何快速掌握Apache Camel:企业集成模式实战指南

如何快速掌握Apache Camel:企业集成模式实战指南 【免费下载链接】camelinaction2 :camel: This project hosts the source code for the examples of the Camel in Action 2nd ed book :closed_book: written by Claus Ibsen and Jonathan Anstey. 项目地址: htt…...

告别SystemTap:为什么Linux内核开发者更偏爱ftrace?从原理到实战对比

告别SystemTap:为什么Linux内核开发者更偏爱ftrace?从原理到实战对比在Linux内核开发与性能优化领域,调试工具的选型往往决定了问题排查的效率与系统稳定性。当面对偶发的调度延迟或难以复现的内核异常时,开发人员需要在低开销、高…...

ARMv8-A架构调试机制:断点与观察点实现原理

1. AArch64调试机制概述在ARMv8-A架构中,调试功能通过硬件断点和观察点实现程序执行流的精确控制。这些机制依赖于一组专用寄存器,主要包括:断点控制寄存器(DBGBCR_EL1)断点值寄存器(DBGBVR_EL1)观察点控制寄存器(DBGWCR_EL1)观察点值寄存器(…...

Atomic Layout高级技巧:使用Query函数实现自定义媒体查询

Atomic Layout高级技巧:使用Query函数实现自定义媒体查询 【免费下载链接】atomic-layout Build declarative, responsive layouts in React using CSS Grid. 项目地址: https://gitcode.com/gh_mirrors/at/atomic-layout Atomic Layout是一个基于React的声明…...

从安装到精通:BetterTweetDeck完整使用手册(2023最新版)

从安装到精通:BetterTweetDeck完整使用手册(2023最新版) 【免费下载链接】BetterTweetDeck A browser extension to improve TweetDeck with a lot of features 项目地址: https://gitcode.com/gh_mirrors/be/BetterTweetDeck 想要提升…...

FIFA 23生涯模式终极修改指南:免费开源工具打造完美足球世界

FIFA 23生涯模式终极修改指南:免费开源工具打造完美足球世界 【免费下载链接】FIFA-23-Live-Editor FIFA 23 Live Editor 项目地址: https://gitcode.com/gh_mirrors/fi/FIFA-23-Live-Editor 还在为FIFA 23生涯模式中球员成长缓慢、转会困难而烦恼吗&#xf…...

Atomic Layout嵌套布局最佳实践:构建复杂UI系统的完整指南

Atomic Layout嵌套布局最佳实践:构建复杂UI系统的完整指南 【免费下载链接】atomic-layout Build declarative, responsive layouts in React using CSS Grid. 项目地址: https://gitcode.com/gh_mirrors/at/atomic-layout Atomic Layout是一个基于React的声…...

AhMyth短信管理器:远程读取和发送短信的终极技术指南 [特殊字符]

AhMyth短信管理器:远程读取和发送短信的终极技术指南 🚀 【免费下载链接】AhMyth Cross-Platform Android Remote Administration Tool | The only maintained version of AhMyth on github | A revival of the original repository at https://GitHub.c…...

终极Chrome画中画扩展:免费实现多任务视频观看的完整指南

终极Chrome画中画扩展:免费实现多任务视频观看的完整指南 【免费下载链接】picture-in-picture-chrome-extension 项目地址: https://gitcode.com/gh_mirrors/pi/picture-in-picture-chrome-extension 你是否曾经希望在浏览网页、处理文档或使用其他应用时&…...

StableSR vs 传统放大算法:为什么AI超分辨率效果更好?

StableSR vs 传统放大算法:为什么AI超分辨率效果更好? 【免费下载链接】sd-webui-stablesr StableSR for Stable Diffusion WebUI - Ultra High-quality Image Upscaler 项目地址: https://gitcode.com/gh_mirrors/sd/sd-webui-stablesr StableSR…...

CStealer工作原理揭秘:从Discord令牌到加密货币钱包的窃取技术

CStealer工作原理揭秘:从Discord令牌到加密货币钱包的窃取技术 【免费下载链接】cstealer [BIG UPDATE] A discord token grabber, crypto wallet stealer, cookie stealer, password stealer, file stealer etc. app written in Python. 项目地址: https://gitco…...

WeTextProcessing解决方案:构建企业级多语言文本归一化与逆归一化系统

WeTextProcessing解决方案:构建企业级多语言文本归一化与逆归一化系统 【免费下载链接】WeTextProcessing Text Normalization & Inverse Text Normalization 项目地址: https://gitcode.com/gh_mirrors/we/WeTextProcessing 在当今自然语言处理&#xf…...

探索DeepPurpose预训练模型:10分钟实现SARS-CoV-3CL蛋白酶抑制剂虚拟筛选

探索DeepPurpose预训练模型:10分钟实现SARS-CoV-3CL蛋白酶抑制剂虚拟筛选 【免费下载链接】DeepPurpose A Deep Learning Toolkit for DTI, Drug Property, PPI, DDI, Protein Function Prediction (Bioinformatics) 项目地址: https://gitcode.com/gh_mirrors/de…...

Polyformer配件制作:Polycutter Lite切割器组装与使用教程

Polyformer配件制作:Polycutter Lite切割器组装与使用教程 【免费下载链接】Polyformer Polyformer is an open-source project that aims to recycle plastics into FDM filaments 项目地址: https://gitcode.com/gh_mirrors/po/Polyformer Polyformer是一个…...

3个关键维度重新定义工作价值:科学量化你的职业选择

3个关键维度重新定义工作价值:科学量化你的职业选择 【免费下载链接】worth-calculator Calculating the actual value of your job beyond just salary 项目地址: https://gitcode.com/gh_mirrors/wo/worth-calculator 你是否曾在深夜加班时思考&#xff0c…...

3步快速上手:终极AI图像增强工具Real-ESRGAN完全指南

3步快速上手:终极AI图像增强工具Real-ESRGAN完全指南 【免费下载链接】Real-ESRGAN Real-ESRGAN aims at developing Practical Algorithms for General Image/Video Restoration. 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN 你是否曾经为模糊…...

AI Agent Harness Engineering 生态系统:基础设施、工具与应用层

AI Agent Harness Engineering 生态系统全解:基础设施、工具链与生产级应用落地 一、引言 钩子 你有没有过这样的经历:花了3天时间调好了一个支持多工具调用的AI Agent Demo,演示的时候能自动查订单、退运费、生成工单,效果惊艳到老板当场拍板要上线。结果真到生产环境跑…...

Akagi麻将AI助手:5分钟搭建你的实时对局分析系统,告别盲目打牌!

Akagi麻将AI助手:5分钟搭建你的实时对局分析系统,告别盲目打牌! 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majs…...

AI Agent的节能与绿色计算:优化计算资源消耗的算法与策略

AI Agent节能与绿色计算实战:从算法优化到工程落地的全栈减碳指南 摘要/引言 你有没有算过,调用一次GPT-4生成1000字的回答,消耗的电量相当于一个普通家庭LED灯亮3个小时?据国际能源署2024年发布的报告,全球数据中心的年碳排放已经达到12亿吨,占全球总碳排放的2.1%,和…...