递归,怎么说呢? 递出去 (一直走到递归的退出条件 , 就一直返回了) , 又归来
// 有类似循环的过程应该可以考虑递归吧.
相信你们都有递归的一点基础了,什么递归条件什么的,我这里不多废话了.我们这里主要着重理解递归,其实就一张图就可以了.
直接上题目: 如何依次打印 12345 的每一位的数字?
print : 1 2 3 4 5
怎么样? 有点不好理解吧?
换一张图来试试?
看完这一张嵌套图之后怎么样?
是不是有一种倒序的意思啊? 最初的打印并没有最开始打印.
再来一道求字符串长度的用递归的题目 :
*str != '\0' 那么字符串的长度肯定大于等于 1, 所以是 1 + 后面字符串的长度.
............
1 + 1 + ...... + 0
嵌套展开图各位可以自己画一画了 , 很容易的. 写起来不太容易啊 .
再来一道计算阶乘的题吧:
这个阶乘的题目和求斐波那契数列那个题目是很相似的:
总之 , 用递归要知道递归的缺点 .
再来一道网上说的什么 <爬楼梯题目> , 其实也是求斐波那契数列 (转化一下就可以了).
什么 <汉诺塔题目> 也可以用递归
什么求链表的长度 , 什么反转单链表 , 树的遍历 , dfs 搜索 , bfs 搜索什么的都可以用 .
用递推可以解决部分递归的问题 . (解决递归的重复计算问题 , 还有栈空间的问题呢......)