递归的含义与使用(重中之重)

递归是一种程序设计技巧,通过调用自身来解决大型复杂问题。递归包含两个阶段:分解问题至基础案例(递),然后从基础案例返回解决问题(归)。正确使用递归需明确递推关系和终止条件。文章举例说明了猴子偷桃问题的递归解决方案,展示了递归在计算问题(如阶乘、斐波那契数列)和数据结构(链表、树、图)中的应用。
摘要由CSDN通过智能技术生成

一.递归的概念

       简单说程序调用自身的编程技巧叫递归。递归算法的实质将原来的问题转化为更小的同一问题,然后递归调用方法来表示问题的解。

二.递归的思想

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

      递归,即分为两个阶段。递与归:

  • 递:将递归问题分解为若干个规模较小,与原问题形式相同的子问题,这些子问题可以用相同的解题思想来解决。
  • 归:当你将问题不断缩小规模递去的时候,必须有一个明确的结束递去的临界点(递归出口),一旦 达到这个临界点即就从该点原路返回到原点,最终问题得到解决。 

为确保递归的正常进行,需注意:

1.递推关系,可将所有其他情况拆分到基本案例。

2.递归终止的条件。

三.什么时候使用递归

  • 当问题和子问题具有递推关系,比如杨辉三角、计算阶乘、斐波那契数列。
  • 具有递归性质的数据结构,比如链表、树、图。

递归基本模型:

 //递归函数

//递归终止条件

//递归操作

举个比方:(猴子偷桃问题)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//递归函数
int eatPeach(int day) {
	//递归终止条件(if语句)
	if (day == 1) {
		return 1;
	}
	//递归操作(返回值)
	return 2 * (eatPeach(day - 1) + 1);
}
int main() {
	int result = eatPeach(5);
	printf("桃子的总数量为%d", result);
	return 0;
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭天宇 abfore

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值