空间复杂度
一:空间复杂度:用来评估算法内存占用大小的问题
空间复杂度的表示方式:
-
使用了几个变量:O(1);
-
使用了长度为n的一位列表:O(n);
-
使用了m/n行n列的二位列表:O(mn)/O(n**2);
公司一般采取的策略是“空间换时间”===》怎么内存大小来降低网页或者应用的打开时间/访问时间。
二:递归:
递归的特点:1). 调用自身 2). 结束条件
1 #当我们输入3的时候,一下代码的打印结果是什么? 2 def func1(x): 3 if x >0: 4 print(x) 5 func1(x-1) 6 #-------------------------------- 7 def func2(x): 8 if x >0: 9 func2(x-1) 10 print(x) 11 #--------------------------------
由上图可知:func1函数打印出来的是3、2、1;func2函数打印出来的是1、2、3(其中比较大的空白是递归)。
三:汉诺塔介绍及问题
汉诺塔的递归问题:
1 def hanio(n,a,b,c): 2 if n > 0: 3 hanio(n-1,a,c,b) 4 print("moving %s to %s" %(a,c)) 5 hanio(n-1,b,a,c)
结果:
moving A to C
moving A to B
moving C to B
moving A to C
moving B to A
moving B to C
moving A to C
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程