3.4 累加的递归实现

本文介绍了递归的概念,即程序调用自身以解决大型复杂问题的编程技巧。递归需要具备基本情况(保证递归终止)和递推关系(问题拆解)。以累加为例展示了递归实现,并指出递归与for循环在时间复杂度相同但空间复杂度上递归更高。
摘要由CSDN通过智能技术生成

递归:

递归是一种解决问题的有效方法,在递归过程中,函数将自身作为子例程调用。

简单说程序调用自身的编程技巧叫递归。递归的思想是把一个大型复杂问题层层转化为一个与原问题规模更小的问题,问题被拆解成子问题后,递归调用继续进行,直到子问题无需进一步递归就可以解决的地步为止

使用递归需要避免出现死循环,为了确保递归正确工作,递归程序应该包含2个属性:

  1. 基本情况(bottom cases),基本情况用于保证程序调用及时返回,不在继续递归,保证了程序可终止。
  2. 递推关系(recurrentce relation),可将所有其他情况拆分到基本案例。

1.老师的代码

#include <stdio.h>

/**
 * Recursive addition.
 */
int addTo(int paraN) {
	int tempSum;
	printf("entering addTo(%d)\r\n", paraN);
	if (paraN <= 0) {
		printf(" return 0\r\n");
		return 0;
	} else {
		tempSum = addTo(paraN - 1) + paraN;
		printf(" return %d\r\n", tempSum);
		return tempSum;
	}// Of if
}// Of addTo

/**
 * A clear version.
 */
int clearAddTo(int paraN) {
	if (paraN <= 0) {
		return 0;
	} else {
		return clearAddT
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值