[问题] 要如何建构程式递回的概念

楼主: Kuba4ma (哦吼)   2020-03-27 13:03:10
我学Python大概半个月
之前有学过资料结构和算法(但没用程式实作过)
leetcode上难度easy的array或是linked list的题目可以解7成
这阵子想说来刷Tree的题目
但没有一题能够靠自己想出来
我本身知道递回在干嘛(知道数学递回定义)
不过没办法自己写程式跑出正确答案
然后上网看别人的答案又看得懂
看自己的程式又臭又长跑不出答案
但是看到别人的程式才简单几行
真的是满满的挫折感
程式新手要怎么建构程式递回的概念阿
作者: ddavid (谎言接线生)   2020-03-27 13:16:00
回头去看看数学上定义的递回式?
楼主: Kuba4ma (哦吼)   2020-03-27 13:17:00
数学定义的递回我看得懂 但问题是程式实作不出来 冏
作者: ddavid (谎言接线生)   2020-03-27 13:18:00
那也有可能是程式实践能力上并没有你自己所想的充足,你还没法真的做到脑中想什么就能化为程式写出来递回说到头关键也就只是写出递回式跟设定终止条件,程式本身是很精简的另外就是 看得懂 跟 懂 往往是两回事看得懂有时候是人家写得很好很漂亮所以好懂,可是你没有深入去想为什么这么写,如果这边那边改动一下会有什么效果,如果自己来写会用什么写法的话,那不能算是真懂像你也说数学定义的递回你看得懂,那你有试过拿习题来自己实际写出对应的递回式跟终止条件吗或是现实要解个什么问题,你不管三七二十一就是从其中找个地方用递回去思考,有时这虽然不是最佳解法却可能是很好的思考训练
作者: cuteSquirrel (松鼠)   2020-03-27 14:16:00
把原问题转化成有固定降解形式的子问题。还有对应的边界条件
作者: watashino (我同学数学很烂)   2020-03-27 14:39:00
我觉得重点就三个啦,前两个记得一定要有1.终止条件2.呼叫自己的方式3.写function的过程中呼叫自己的时候可以把这个function当作已经完成了,呼叫了就会有你要的output了,这样会容易很多
作者: OrzOGC (洞八达人.拖哨天王)   2020-03-27 15:09:00
我只能CO别人写好的来改...QQ
作者: pmove (金疾柠檬)   2020-03-27 16:58:00
我刷了一百多题的经验是,很多tree的简单题,我想的比一些中等,甚至困难难度的还要久,难度只能做参考,并不是绝对
作者: liflguy (xxxwino)   2020-03-27 23:00:00
发现一整个问题是由小问题组成,可以借由解决小问题后解决下一阶段的问题,数学上基本的表示为f(x)=f(x-1)
作者: ddavid (谎言接线生)   2020-03-28 17:15:00
楼上的式子不太精确XDf(x)=f(x-1)只会得到f(x)=f(1) for all x XD
作者: protoss (天生散人)   2020-03-29 03:15:00
这资料结构的书不是一开始会教吗?我记得拿河内塔当例子..
作者: pmove (金疾柠檬)   2020-03-29 10:55:00
f(x)=f(x-1)是一种递回,但不是所有递回都可以这样子表示
作者: yoche2000 (Sushi Desu! 在下寿司)   2020-03-29 14:44:00
费式数列
作者: liflguy (xxxwino)   2020-03-30 00:20:00
楼上各位没错,只是举个最简单的例子XD
作者: velaro (下路双组合)   2020-04-04 13:50:00
https://www.bilibili.com/video/av21540971/python 资料结构的影片

Links booklink

Contact Us: admin [ a t ] ucptt.com