摘要: 大约半年前,我写过一篇文章《C#也玩尾递归》,里面介绍了一种技巧使得C#也能实现尾递归,不再像普通递归调用那样受调用栈的限制。 今天重新看了下文中最后的实现代码,感觉还是不够满意:因为引入了一个对用户来说不是很必要的数据结构RecFunc<>,用户需要定义的代码大概是这样:(rec,i,n,a,b) => (n<3 ? 1 : (i==n ? a+b : rec.Callback(i+1, n, b, a+b))) 从调用方的角度来看,下面代码就比上面的更容易理解(不用self都不好意思说自己学过python):(self,i,n,a,b) => (n<3 阅读全文
posted @ 2011-07-27 22:49 neutra 阅读(3268) 评论(3) 推荐(1) 编辑