C语言之递归函数


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

  Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群一名“创始团队·嘉宾” ,现在我来为大家介绍一下有关嵌入式方面的内容。在进入介绍之前,可能有一些小伙伴不了解易编程·终身成长社群;想要进一步了解社群的小伙伴可以点击下方链接自行跳转至关于社群的介绍:

易编程·终身成长社群介绍 :
https://blog.csdn.net/weixin_74300052?spm=1011.2266.3001.5343

在这里插入图片描述


🍊递归函数

概念:在函数体内,自己调用自己,直到某个条件满足才结束调用。这样的函数我们叫做递归函数。

引入递归:

如果我们要求取 5! ,你会运用哪种方法?
①5 * 4!
②5 * 4 * 3!
③5 * 4 * 3 * 2!
④5 * 4 * 3 * 2 * 1   ====>递推结束条件
递归有两个阶段:
递推:①到④
回归: 从return 开始回归,④到①

递推与回归代码解释:

递推:

主函数—>AO–>BO–>CO

回归:

CO中返回ret值给BO中的ret,按顺序返回AO,main函数

#include <stdio.h>
int AO();
int BO();
int CO();
int main()
{
	int t = AO();
	return 0;
}
int AO()
{
	int ret = BO;
	return ret;
}
int BO()
{
	int ret = CO;
	return ret;
}
int CO()
{
	int ret = 800;
	return ret;
}

递归例题:
 古有善切饼者,名庖丁,庖丁之弟也。把一张大饼置于板上,不许离开,每一刀切下去都是一条直线。问切20刀最多能分成多少块?(切记不是平分)

我们来进行分析以下,我们设n表示切的刀数,a( n )表示切n刀可以得到的块数。
(1)我们一刀都不切

	n = 0
	a(0) = 1

(2)当我们切刀的时候

a(1) = 1 + 1 = 2    //切1刀多1块
a(2) = 2 + 2 = 4    //切2刀多2块
a(3) = 4 + 3 = 7	//切3刀多3块
a(4) = 7 + 4 = 11   //切4刀多4块
...

我们得到规律:
a(n) =  a(n - 1) + n  //切n刀多n块

在这里插入图片描述
代码解决:

#include <stdio.h>

//a(n) = a(n - 1) + n
//计算切n刀得到的饼数
int cutpie(int x)
{
	int sum = 0;
	
	if(n == 0)
		return 1
	
	sum = cutpie(n - 1) + n; 
	return sum;
}

int main()
{
	int n = 0;
	int num = 0;
	printf("please input you want to cut knift number:");
	scanf("%d",&n);
	num = cutpie(n);
	printf("num = %d\n",num);
	return 0;
}

函数调用过程:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值