递归的艺术

来源:互联网 发布:minix3源码有多少 编辑:程序博客网 时间:2024/05/06 11:32

递归的艺术

我学编程也没多久,但是在很多时候都接触到了递归!

只想谈谈对递归的一些认识!
对于许多初学者(包括我),在刚学习递归的时候,都被他弄得头疼!
特别是总众所周知的汉诺塔(真名河内塔)问题!
让很多人睡不着觉!

如果我们不能正确的理解递归的原理,
在以后的很多学习中都会遇到一些困难!
即使递归会因为不断调用自身而造成时间的浪费!
特别是ACM对时间的限制很严格!
但是这并不影响递归在解决一些问题中的方便性!

像双色三色汉诺塔,背包问题。。。
很多经典问题!

我想说一下,大家如果在刚刚接触递归的时候可能会很迷糊!
其实,在刚一开始不要把自己陷入到那具体的调用过程(如果你能理解的话,更好!)
那样你就不会体会到使用递归的好处了!
应该学会一种抽象能力!
把问题建立在另一种层次上,忽略具体的实现细节,把这些工作交给递归函数去实现!
你只负责找到合适的边界条件,以及正确的调用递归函数!

如果一开始就陷入到具体的实现细节上,你会对递归感到很反感!

正确的使用递归会使你事半功倍!
如果你不理解的话,也不要乱用!

即使很多递归问题都可以用迭代来解决!
但是我一直认为递归有他存在的价值!

原创粉丝点击