hello-algo

news/2025/1/10 0:06:41/文章来源:https://www.cnblogs.com/xsl-blogs/p/18659469

复杂度分析

迭代与递归

  • 函数返回前上下文存储在栈帧空间,故递归比迭代耗费更多内存空间
  • 递归调用函数有额外开销,故递归时间效率也更低

迭代

  • while循环更灵活,for循环更简洁

尾递归和正常递归

image

image

  • 尾递归会被编译器优化,空间效率相当于迭代!!!原因是尾递归无需保存上下文,正常递归需保存上一层递归的上下文
/* 普通递归 */
int Recursion(int i)
{if (i == 1) return 1;int res = Recursion(i - 1);return i + res;
}/* 尾递归,将存储结果的变量res置为参数 */
int tailRecur(int i, int res)
{if (i == 0) return res;return tailRecur(n - 1, res + n);
}
int func()
{int res = 0;return tailRecur(5, res); //计算1--5的和,存储在res中
}
  • 尾递归本质就是直接return func() 好处是递的时候计算,归的时候一路返回某个确定的数

递归树

image

// 斐波那契问题:数列前n项和:0 1 1 2 3 5 8
int fibo(int i)
{if (i == 1) return 0;if (i == 2) return 1;return fibo(i-1) + fibo(i-2);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/866839.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DataWorks数据分层

在阿里巴巴的数据体系中,我们建议将数据仓库分为三层,自下而上为:数据引入层(ODS,Operation Data Store)、数据公共层(CDM,Common Data Model)和数据应用层(ADS,Application Data Service)。数据仓库的分层和各层级用途如下图所示。数据引入层ODS(Operation Data …

实用且功能丰富的IT工具箱-IT-tools

介绍 IT-Tools是为开发人员度身打造的一套便捷在线工具。 它提供全面功能,使开发者能以更高效方式完成任务。 优秀的用户体验确保用户愉悦使用工具,并获得卓越成果。 经由IT-Tools,开发人员能轻松应对各类技术挑战,享受工作中的便利与灵活。 官网正式稳定版在线版正式稳定版…

《CPython Internals》阅读笔记:p61-p75

《CPython Internals》学习第 4 天,p61-p75 总结,总计 15 页。 一、技术总结 1.编译器类型 (1)self-hosted compiler Self-hosted compilers are compilers written in the language they compile, such as the Go compiler. This is done by a process known as bootstrap…

ETHERCAT转CCLINK网关对接ethercat通讯协议的高效解析指南

在某汽车零部件制造工厂的自动化生产线升级项目中,部分关键设备采用了支持 ETHERCAT 总线的 PLC 进行控制,而工厂原有的一些设备则遵循 CCLINK 协议标准。由于这两种协议之间无法直接通信,导致生产线的数据交互受阻,难以实现整体的协同运作与高效管理,迫切需要一种可靠的解…

妙用编辑器:列编辑在编写Markdown表格时的使用技巧

1 妙用编辑器:列编辑在编写Markdown表格时的使用技巧经常写Markdown笔记的朋友应该清楚,Markdown的表格比较麻烦,定义表格每列时需要使用|线进行绘制表格边界。比如有下面一段文字名称, 大小, 类型, 修改, 属性 …

Python用K-Means均值聚类、LRFMC模型对航空公司客户数据价值可视化分析指标应用

全文链接:https://tecdat.cn/?p=38708 原文出处:拓端数据部落公众号 分析师:Yuling Fang 信息时代的来临使得企业营销焦点从产品中心转向客户中心,客户关系管理成为企业的核心问题。客户关系管理的关键是客户分群,通过客户分群,区分无价值客户和高价值客户,同时更好的了…

【专题】2024年直播、短视频:抖音、小红书、快手行业报告汇总PDF合集分享(附原数据表)

原文链接: https://tecdat.cn/?p=38697 在当今数字化飞速发展的时代,直播、短视频行业已然成为了大众生活与商业运作中不容忽视的重要力量,正不断重塑着信息传播与消费的格局。 2024 年,这一领域更是呈现出多元且复杂的发展态势。从内容创作者生态来看,抖音、小红书、快手…

卫龙 IPO 多维度分析及运营创新解析报告-CSDN博客

全文链接: https://tecdat.cn/?p=38686 分析师:Dichuan Zheng 一、报告概述 本报告旨在对卫龙的 IPO 相关情况展开全面分析,涵盖外部环境、波特五力、内部状况、商业模式以及价值链等多方面内容,通过梳理卫龙的发展历程、关键要素等,为了解其上市背景及发展潜力提供参考依…

卷王公开查询设置(1.6版本)

1、公开查询设置页面说明 创建的流程为:问卷 -> 设置 -> 公开查询设置 -> 新增查询页面页面标题,设置查询页面的标题 页面查询描述信息,设置查询页面的描述 查询条件,点击设置可以选择多个查询条件,必须满足所有的查询条件才能输出结果 查询结果,可以控制每一个…

在Lazarus下的Free Pascal编程教程——打造有智能感知的用户设置操作界面

0.前言 我想通过编写一个完整的游戏程序方式引导读者体验程序设计的全过程。我将采用多种方式编写具有相同效果的应用程序,并通过不同方式形成的代码和实现方法的对比来理解程序开发更深层的知识。了解我编写教程的思路,请参阅体现我最初想法的那篇文章中的“1.编程计划”和“…

基于CNN卷积神经网络的金融数据预测matlab仿真,对比BP,RBF,LSTM

1.程序功能描述 基于CNN卷积神经网络的金融数据预测matlab仿真,对比BP神经网络,RBF神经网络,LSTM网络.对比预测结果和预测误差。 2.测试软件版本以及运行结果展示MATLAB2022A版本运行 3.核心程序for i = 1:floor(length(data1)/5);p1w(5*i-4:5*i,1) = [p1(i,1);p1(i,1);…

G1原理—2.G1是如何提升分配对象效率

大纲 1.G1的对象分配原理是怎样的 2.深入分析TLAB机制原理 3.借助TLAB分配对象的实现原理是什么 4.什么是快速分配 + 什么是慢速分配 5.大对象分配的过程 + 与TLAB的关系 6.救命的稻草—JVM的最终分配尝试G1如何分配对象+TLAB机制+分区协调机制 G1设计了一套TLAB机制+快速分配机…