无标题无名氏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.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:项目里千万不要写递归,做题目用用就行了