V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nnegier
V2EX  ›  程序员

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

  •  
  •   nnegier · 7 小时 33 分钟前 · 677 次点击
    可能自己移动端开发内存限制栈溢出的原因,所以很少用递归多用队列循环,导致我在递归这块不太熟悉,最近在看书,里面代码有比较多的递归用法,递归我会是会,由外到里,再从里到外,但是不算很熟悉
    14 条回复    2024-12-15 03:06:23 +08:00
    han777
        1
    han777  
       7 小时 31 分钟前
    《计算机程序的构造与解释》
    wyx119911
        2
    wyx119911  
       7 小时 30 分钟前
    leetcode 刷几道二叉树的题?
    coool
        3
    coool  
       7 小时 4 分钟前
    基于 JavaScript 和 Python 的书:<递归算法与项目实战>
    kapaseker
        4
    kapaseker  
       6 小时 48 分钟前
    递归有什么非要用的场景吗?其实这个没有非得学的必要
    nnegier
        5
    nnegier  
    OP
       6 小时 23 分钟前 via Android
    @kapaseker 这个还是必须要学,用不用是一回事
    henix
        6
    henix  
       6 小时 9 分钟前   ❤️ 1
    iOCZS
        7
    iOCZS  
       5 小时 57 分钟前
    递归有啥特别要学的吗?不过有个尾递归优化的东西。
    iOCZS
        8
    iOCZS  
       5 小时 56 分钟前
    更多时候需要结合场景吧,譬如说深度优先遍历,回溯等。
    mumbler
        9
    mumbler  
       5 小时 1 分钟前
    科目二都没过,就上路了,你肯定上的不是正规驾校
    dragondove
        10
    dragondove  
       4 小时 34 分钟前
    初学的难主要还是缺乏可视化的手段吧,还有一个是用递归模拟迭代的多参数混乱。可以看下类似 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
        11
    amlee  
       4 小时 23 分钟前
    SICP 有一部分专门讲递归
    levelworm
        12
    levelworm  
       3 小时 39 分钟前 via Android
    还是跟着感兴趣的项目来吧,比如说写个 shadow casting 的算法啥的。
    vance123
        13
    vance123  
       1 小时 42 分钟前
    6.009 最后几个项目
    786375312123
        14
    786375312123  
       43 分钟前
    你上 leetcode 做几个 dfs 的题不就好了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   817 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 19:50 · PVG 03:50 · LAX 11:50 · JFK 14:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.