对递归的理解

递归哲学

  阅读递归最容易的方法不是纠缠于它的执行过程,而是相信递归函数会顺利完成它的任务。如果你的每个步骤正确无误,你的限制条件设置正确,并且每次调用之后更接近限制条件,递归函数总是能够正确的完成任务。
  感觉递归内部也隐含这一种哲学思想。因为按照一般的思维,只有过程正确,才能确保结果正确。但是在递归完成之前,过程还没有经过检验,那么结果就应该是不确定的。但是,只要我们相信最后结果是正确的,并用这个结果修正过程,那么最终结果它就是正确的。打个不恰当的比喻,两个思想就类似于唯物主义和唯心主义。用严谨的过程最后得到结果,就是唯物主义——客观因素的集合决定最后的发展结果。用结果反演过程,就是唯心主义——我希望得到这样的结果,最后就得到了这样的结果,我思故我在。

递归具体实现

递归必备因素

1、终止条件
2、递归过程
3、功能实现
  终止条件描述的是递归最终的结束过程;递归过程就是根据具体的需求,不断逼近终止条件并引用递归函数。功能实现部分就是在递归过程中,所需要实现的具体功能。
   递归的难点在于三部分的位置分布

递归分类
尾部递归
/*
 *	用递归方式计算n的阶乘
 */
long factorial(int n)
{
	if(n<0)
		return 1;
	else 
		return n*factorial(n-1);
}

   由于函数在递归调用返回之后不再执行任何任务,所以尾部递归可以很方便的转换为一个简单循环,完成相同的任务。

/*
 *	用迭代方式计算n的阶乘
 */
long factorial(int n)
{
	int result = 1;
	while(n>1)
	{
		result *= n;
		n -= 1;
	}
	return result;
}
中部递归
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值