本文首发于 http://www.YoungZY.com/
作为程序员不知道你有没有过跟我一样的感觉:有些算法的设计真精妙,真神奇!
举个例子,比如递归。
先考虑这样的一个程序题:将 1 到 10 依次累加。
你会怎么处理?
最容易想到的办法可能就是循环了。
1 2 3 4 5 |
// simple loop construct var acc = 0; for (var i = 1; i <= 10; ++i) acc += i; alert(acc); // result is 55 |
但如果不用循环呢?
还能怎么实现?
看看下面这块代码:
1 2 3 4 5 6 7 |
// without loop construct or variables (recursion) function sumRange(start, end, acc) { if (start > end) return acc; return sumRange(start + 1, end, acc + start) } alert(sumRange(1, 10, 0)); // result is also 55 |
这就是递归了。是不是很神奇?!
作为一个老程序员,写代码或看代码的时候,时不时的会有这样的时候:靠,代码还可以这么写啊,真妙!
via Mdeium
近期评论