递归算法时间复杂度和空间复杂度分析与举例

递归算法时间复杂度和空间复杂度分析与举例文章目录前言 1 递归算法性能分析公式 1 1 时间复杂度计算公式 1 2 空间复杂度计算公式 1 3 例子 1 3 1 暴力算法 1 3 2 递归算法 1 3 3 优化递归算法总结前言根据代码随想录博主整理的主要是为了记录递归算法如何分析其性能 并如何根据其性能来优化递归算法 1 递归算法性能分析公式 1 1 时间复杂度计算公式递归算法的时间复杂度 递归的次数 每次递归的时间复杂度 1 2 空间复杂度计算公式递归算法的空间复杂度 递归的深度 每次递归的空间复杂度 1 3 例子计算


前言


1、递归算法性能分析公式

1.1 时间复杂度计算公式

递归算法的时间复杂度 = 递归的次数 * 每次递归的时间复杂度。

1.2 空间复杂度计算公式

递归算法的空间复杂度 = 递归的深度 * 每次递归的空间复杂度。

1.3 例子

计算整数x的n次方

1.3.1 暴力算法

int function(int x, int n) { 
      int ans = 1; for(int i = 0; i < n; i++) { 
      ans = ans * x; } return ans; } 

时间复杂度为O(n),空间复杂度为O(1)。

1.3.2 递归算法

int recursion(int x, int n) { 
      if (x == 0) return 0; if(n == 0) return 1;// 整数(零除外)的0次方为1 if(n == 1) return x;// 退出递归条件 return recursion(x, n - 1) * x; } 

1.3.3 优化递归算法

为了降低时间复杂度,那么就需要O(log n)复杂度,假设每次递归时间复杂度为常熟O(1),那么,递归次数就需要为m = log n次。因为2^m = n,那么每次递归都可以减半,这样就可以重复利用这次递归结果,大大降低时间复杂度。

int recursion2(int x, int n) { 
      if(x == 0) return 0; if(n == 0) return 1;// 整数(零除外)的0次方为1 if(n == 1) return x;// 退出递归条件 int temp = recursion1(x, n / 2); if(n % 2 == 1) { 
      return temp * temp * x;// n为奇数时 } return temp * temp;// n为偶数时 } 

总结

在使用递归时,需要注意,是否存在多余计算,如何减少重复计算部分,就可对此进行优化处理。

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214691.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午3:40
下一篇 2026年3月18日 下午3:40


相关推荐

  • 金蝶服务器设置(金蝶系统登录服务器)

    金蝶如何登录服务器配置内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。如何修改集群节点的NTP服务器地址?集群访问OBS上报403异常。集群Master节点NTP时间与集群外节点的NTP服务器时间不同步,时间相差超过15min,导致集群访问OBS时鉴权失败,上报403异常。cat/…

    2022年4月15日
    189
  • 非线程安全对象�

    非线程安全对象�

    2021年12月2日
    34
  • 蓝牙HID无线触摸屏

    蓝牙HID无线触摸屏写在前面主机 Android5 0 内核 3 4 从机 SensorTile 先上一个效果图原理解析 HID 事件到 Android 屏幕上经历发如下过程 HID amp gt linuxkerneli 子系统 amp gt Androidinput 子系统 HID 是标准的输入协议 对于不同的操作系统而言 也有自己的 input 子系统 Android 层要求

    2026年3月19日
    2
  • 解决手机UC浏览器图片不显示问题

    解决手机UC浏览器图片不显示问题今天做手机项目中 一个轮播图片 在其他手机浏览器没问题 但是到了 UC 浏览器就有问题了 经过站长逐步排查 发现 UC 浏览器自带了广告过滤 在 UC 浏览器设置里面将广告过滤关闭即可 但是这不是唯一解决方案 后来我发现 uc 手机浏览器会过滤包含 ad 字符的图片路径 禁止其显示 所以给图片命名或存放图片路径时尽量不要含有 ad 字符 如 ad img 所以站长代码原来是这样的

    2026年3月19日
    2
  • ubuntu 安装 windows 字体 美化

    ubuntu 安装 windows 字体 美化

    2021年4月29日
    147
  • aws s3 上传文件 html,javascript 上传文件到 aws s3存储桶

    aws s3 上传文件 html,javascript 上传文件到 aws s3存储桶直接上代码 DocumentUplo varcredentia accessKeyId xxxxxxxxxxxx secretAccess xxxxxxxxxxxx 秘钥形式的登录上传 AWS config update credentials AWS config region xxxxxxxxxxxx 设置区域 create

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号