递归的理解与运用

递归可以使你的代码简化,便于理解 。

递归简单理解就是一个函数方法在不断调用自己本身,直到满足条件,输出结果,退出递归。

而我们在使用递归的时候,我们起码要思考三个问题:
问题一: 重复(也就是一直重复出现的子问题)。
问题二: 找好重复中变化的变化量(也就是参数)。
问题三:(我认为最重要的一步) 就是找参数变化趋势。(就指的是递归结束的条件,一定要全,不然就可能会出现无限死循环)。
思考完这三个问题,然后再开始着手去写代码测试。(自己动手才是最重要的!!!)
我们可以借经典案列来让我们更加理解递归:
斐波那契数列:
1,1,2,3,5,8,13…
那么我们的思路按着刚刚的几个问题来进行分析:
1.重复 :从第三项开始就等于前两项之和 ,那么 第n个数就等于(n-1)和(n-2)这两项的和。
2.找变化量(参数):可以看出变化量是项数
3.找递归结束的条件: 从中我们可以看出前两项的数值是确定的
所以我们就可以定项数等于 1 或 2 时,应该输出的是1 。

因此,代码实现如下:

int  fib ( int n){
	if(n==1||n==2){
		return 1;
	}
	return fib(n-1)+fib(n-2);
}

不过,不能仅仅是理解,还需要大量的去运用,去掌握,去熟悉。
私下可以多练习,如:1.循环改成递归 2.找找最经典的递归题做做 3.(最重要的)要经常回顾自己做过的题解,总结规律,找到适合自己的解题思路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值