[问题] 递回问题

楼主: ptt0720 (湿湿)   2016-11-11 23:18:52
macOS 10.12
GCC

我想请问递回的意思是直接呼叫自己就算吗 因为做了好几题还是很不懂
有没有哪边有比较多递回的CODE可以参考
河内塔 排列组合 我就搞到头晕了 主要是流程不太清楚
希望板上能推荐一些教材
还有 有哪些题目是用递回比较方便的吗 因为我发现递回的题目都是一些很漂亮的
不知道以后实战用到的机会多不多?
是这样的
我想要做一个程式
先给定一个值例如
120
然后给数量
8 (8笔资料)
接着输入个数 25 30 15 20 30 40 35 10
然后要印出有几种组合可以使总和=120
我知道把那些资料用阵列来存
但是我要如何用递回来找结果
要让总和等于120
作者: aiwhat   2016-11-12 00:12:00
对于数列第一个数字25有两种情况:取or不取取:问题变为在30 15 20 30 40 35 10找出总和为95的组合不取:在剩下七个数字中找出总和为120的组合剩下的问题就是什么时候该停止递回
作者: youtuuube000 (小孩)   2016-11-12 00:21:00
这问题你可以查看看dynamic programming的背包问题
作者: steve1012 (steve)   2016-11-12 03:01:00
这个可以用一个integer 来模拟所有情形 写成for loop效率很高想写递回的话Google subset sum recursion有很多教学
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-11-12 04:59:00
因为消耗的资源较多 实用上不鼓励递回但有一些刚好就是用递回考虑最简单的问题 或者规模可以
作者: bigpigbigpig (To littlepig with love)   2016-11-12 08:49:00
用 power set 比较快:https://ideone.com/xp9RBc
作者: descent (“雄辩是银,沉默是金”)   2016-11-12 14:33:00
C程序设计的抽象思维, recursive我觉得是可以投资的技巧
楼主: ptt0720 (湿湿)   2016-11-13 11:18:00
我要让资料都给使用者输入 如何让知道哪些输字是必须要的
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-11-13 11:28:00
?输入过滤用循环或regex来match就好 跟递回有何关联

Links booklink

Contact Us: admin [ a t ] ucptt.com