pre: 题目继承自池老师的“每个人都应该懂点XXX系列”
读了一篇介绍“递归”概念的文章,原文在“iOS开发”公众号,作者是唐巧。文章写的很好。
文中提到“递归是非常反人类的思维方式”。没错,生活中人们很少会意识到递归这个概念。
但是,清楚认识递归的概念以后,我发现递归思想在生活中及其常见,就是“不断尝试,不断失败,反复练习,不断迭代。”
function getAbility(currentAbility) {
var enhancedAbility = justDoIt(currentAbility); //just do it, 不要犹豫!总会有收获!
if (enhancedAbility === success) { //success在你心中是怎样定义的呢?
return enhancedAbility; //经历了100次失败,终于成功了!!
} else {
getAbility(enhancedAbility) //失败了不要怕!继续前行!
}
}
我们get新技能的过程,就是反复迭代的过程,不断的经历失败和挫折,直到最后成功。
迭代中有一个很重要的概念,叫“退出条件”。生活中,“退出条件”就是我们对成功的定义。如果将成功定义为“十全十美,比别人强”,那么将在迭代中无法退出,直至最后把自己搞死。
1楼 @adad184 最近刚看的,要区分递归procedure和递归process,前者是语法上的,是说过程间接或直接地refer自身;后者是evolve上的,需要先展开再计算。这导致的结果是,上面一个递归的procedure是一个迭代的process。