算法的“递归”有比较好的学习资源推荐吗?

10 小时 20 分钟前
 nnegier
可能自己移动端开发内存限制栈溢出的原因,所以很少用递归多用队列循环,导致我在递归这块不太熟悉,最近在看书,里面代码有比较多的递归用法,递归我会是会,由外到里,再从里到外,但是不算很熟悉
736 次点击
所在节点    程序员
14 条回复
han777
10 小时 18 分钟前
《计算机程序的构造与解释》
wyx119911
10 小时 17 分钟前
leetcode 刷几道二叉树的题?
coool
9 小时 51 分钟前
基于 JavaScript 和 Python 的书:<递归算法与项目实战>
kapaseker
9 小时 35 分钟前
递归有什么非要用的场景吗?其实这个没有非得学的必要
nnegier
9 小时 10 分钟前
@kapaseker 这个还是必须要学,用不用是一回事
henix
8 小时 56 分钟前
iOCZS
8 小时 44 分钟前
递归有啥特别要学的吗?不过有个尾递归优化的东西。
iOCZS
8 小时 43 分钟前
更多时候需要结合场景吧,譬如说深度优先遍历,回溯等。
mumbler
7 小时 48 分钟前
科目二都没过,就上路了,你肯定上的不是正规驾校
dragondove
7 小时 20 分钟前
初学的难主要还是缺乏可视化的手段吧,还有一个是用递归模拟迭代的多参数混乱。可以看下类似 https://dmytrobaida.github.io/recursion-viewer/ 的工具,然后自己写的时候可以打印点日志,打印的方式是递归方法入口先打印 indent (比如说是 2 个空格)* 递归深度(递归深度作为参数传入)然后方法名加各个参数信息。打印内容可能是类似下面这样
```
|fib(5)
| |fib(4)
| | |fib(3)
| | | |fib(2)
| | | |2
| | | |fib(1)
| | | |1
| | |3
| | |fib(2)
| | |2
| |5
| |fib(3)
| | |fib(2)
| | |2
| | |fib(1)
| | |1
| |3
|8
```
这个的源码大概是这样:
```scala
def fib(n: Int, depth: Int = 0): Int =
println(s"""${"| " * depth}|fib($n)""")
if n <= 2 then
println(s"""${"| " * depth}|$n""")
n
else
val r = fib(n - 1, depth + 1) + fib(n - 2, depth + 1)
println(s"""${"| " * depth}|$r""")
r

val res = fib(5)
```

当然,你也可以想办法把这个功能做成装饰器
amlee
7 小时 10 分钟前
SICP 有一部分专门讲递归
levelworm
6 小时 26 分钟前
还是跟着感兴趣的项目来吧,比如说写个 shadow casting 的算法啥的。
vance123
4 小时 29 分钟前
6.009 最后几个项目
786375312123
3 小时 30 分钟前
你上 leetcode 做几个 dfs 的题不就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1097577

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX