To Iterate is Human, to Recurse, Divine.
人理解迭代,神理解递归。
写递归函数要考虑的问题:
1.什么时候结束递归,就是你必须要明确递归终止条件,其实就是一个if()判断语句,满足了这个条件就结束递归。然后在花括号{}中给出递归终止时的处理办法。
2.采用【分而治之】的思想,把大问题分解为容易解决的小问题,就是写一个通用的函数,能解决大问题下分解的小问题,小问题下分解的更小的问题。
递归的编程模型
模型一: 在递去的过程中解决问题
function recursion(大问题){
if (end_condition){ // 明确的递归终止条件
end; // 简单情景,给出递归终止时的处理办法。
}else{ // 再将问题转换为子问题的每一步,解决该步中剩余部分的问题
solve; // 递去,在递去的过程中解决问题
recursion(小问题); // 递到最深处后,不断地归来
}
}
模型一: 在归来的过程中解决问题
function recursion(大问题){
if (end_condition){ // 明确的递归终止条件
end; // 简单情景
}else{ // 先将问题全部描述展开,再由尽头“返回”依次解决每步中剩余部分的问题
recursion(小问题); // 递去
solve; // 归来,在归来的过程中解决问题
}
}
参考文章地址:
https://blog.csdn.net/weixin_43025071/article/details/89149695
https://blog.csdn.net/weixin_43405546/article/details/83045725?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-11.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-11.no_search_link