数据结构(二)关于空间的使用

数据结构(二)关于空间的使用

要点:解决问题的效率跟空间的利用效率有关

思考:如何空间的利用效率

01 如何空间的利用效率

参考:递归导致的栈溢出

java 复制代码
Exception in thread "main" java.lang.StackOverflowError

02 案例:输出比N小的正整数和N

1.循环打印

  • 一般的解决方式,直观的写法
java 复制代码
public static void printN1(int n) {
    for (int i = 1; i <= n; i++) {
        System.out.println(i);
    }
}

2.递归打印

  • 不断调用自身函数,把问题分成无数个小单元解决
java 复制代码
public static void printN2(int n) {
		while (n>0) {
			printN2(n-1);
			System.out.println(n);
			return;
		}
	}

二者对比

  • 在n为2万以下二者无差别
  • 但n大于2万后,递归算法会产生栈溢出导致程序终止

03 我的总结

  • 递归算法把问题划分成无数小单元,在一一解决,但对空间的占用是非常大的,当数据量变大就造成了程序的终止,这是非常危险的
相关推荐
Σίσυφος190013 小时前
depth_from_focus 详解
算法
gugucoding13 小时前
57. 【Java】日志框架:SLF4J与Logback
java·开发语言·logback
今天的砖头有点烫手啊13 小时前
JVM 调优实战:从 GC 日志到参数优化,一次完整排查
java·jvm
疯狂打码的少年13 小时前
【数据结构】八大排序算法对比总结(时间/空间/稳定性)
数据结构·笔记·算法
树獭哥14 小时前
量化金融入门:从数据规则到随机游走与凯利公式
人工智能·算法·金融·量化金融
爱奥尼欧14 小时前
10.C++ string 实现详解
java·开发语言·c++
小飞学编程...14 小时前
【equals 、Comparable、Comparator 三者的区别】
java·python
骇客野人14 小时前
Java分布式任务调度方案(完整落地指南)
java·开发语言·分布式
JacksonMx14 小时前
Spring @Async 坑点 + 改造方案
java·开发语言
薛定e的猫咪14 小时前
(arXiv 2026)GLiBRL :可学习基函数的深度贝叶斯元强化学习 ----待补充
人工智能·深度学习·学习·算法·机器学习