回应模式 - No.61997872


No.61997872 - 技术宅


无标题无名氏No.61997872 只看PO

2024-04-11(四)22:56:26 ID:gwX4Vl4 回应

妈的,跟递归爆了
二叉树递归不看答案完全想不明白,看一眼答案就几行代码稍微细看就变成抄代码了,为什么这个世界会有递归,稍微细想一下钻进去就出不来了

无标题无名氏No.62014507

2024-04-13(六)12:32:13 ID: fqywsrE

递归是从逻辑本身出发的,循环的逻辑才是为了方便编译和机器执行转换过去,你只是习惯循环了

>>No.62009509
所以才有了尾递归优化

无标题无名氏No.62036454

2024-04-15(一)10:33:29 ID: 3zUJlIo

递归确实比较抽象,有两种方法可以帮助理解。
一是把递归当作“对同一段逻辑的重复调用”,那么在思考的时候只需要考虑最外层,也就是最后一步的情况,写下它的终止条件,再把剩余的部分作为输入,继续利用这段逻辑。这样的递归大概率是尾递归。
二是尝试写出递归的“递推公式”。首先定义你的递归函数,并且可以随意带入一个输入的组合,然后用已知的逻辑去做代换,直到代换出一个递推的形式,之后把这个递推逻辑一般化,就能写出递推的调用方式。这种形式写出来的一般不是尾递归,结合函数式可以帮你更好地理解。

无标题无名氏No.62126009

2024-04-22(一)16:00:54 ID: XdRGBCn

要不看看 little schemer?

无标题无名氏No.62240624

2024-05-02(四)10:53:47 ID: s4TEM2Z

可以用队列去实现栈,然后模拟递归运行过程。本质就是栈的思想

无标题无名氏No.62728324

2024-06-12(三)13:32:49 ID: 9BX1elk

实际上是从小问题到大问题的过程 σ`∀´)
因为我这一个值需要前面一个值 一直深推的话就到最初的小问题了 这样理解会不会好一些(*´∀`)

无标题无名氏No.62739079

2024-06-13(四)11:14:18 ID: 4WVuFwF

>>No.62014507
然而我习惯递归
很多情况下无法写成尾递归的形式,所以现在遇到递归我会改成循环

无标题无名氏No.62739423

2024-06-13(四)11:46:17 ID: Flni6rg

递归是栈,循环是队列。思考递归千万不要自己脑子跟着入栈,你首先应该确定这个函数的输入和输出到底是什么,确定下来以后,就不能变且坚定的相信这个函数就该返回这个。然后考虑递归终止的条件,最后考虑如何从这一层的递归传递到下一层。
其实最重要的就是第一步,确定输入和输出,这两个条件一旦清晰确定,递归成功90%了。
ps:项目里千万不要写递归,做题目用用就行了

无标题无名氏No.62739600

2024-06-13(四)11:59:39 ID: k0Zi4rX

一个性能不如循环一根的算法思想能占据一席之地就是因为它好理解啊( ゚∀。)

无标题无名氏No.62740459

2024-06-13(四)13:25:58 ID: huncPK3

>>No.61997872
要找那个basecase,找到了就好弄