C语言:递归函数基础知识

1.递归函数

1.1.什么是递归?

所谓递归,就是将自己包含在内,或者用自己来定义自己。

1.2.递归作用

有效利用递归不仅可以使程序更简洁,还可以很好解决一些问题(可以看主页里的一道递归练习题)。

1.3.递归思想

把一个大型复杂问题层层转化为⼀个与原问题相似,但规模较小的子问题来求解;直到子问题不能再被拆分,递归就结束了。所以递归的思考方式式就是把大事化小的过程。

1.4.简单的递归程序

#include <stdio.h>
int main()
{
 printf("hehe\n");
 main();//main函数中又调⽤了main函数
 return 0;
}

上面那个程序由于没有调用的结束条件,就会陷入死循环,最终造成栈溢出。所以递归有限制条件。

1.5.递归函数的必要条件

1.递归存在限制条件,当满足这个限制条件的时候,递归便不再继续。
2.每次递归调用之后越来越接近这个限制条件。

2.递归函数简单举例

2.1.求n的阶乘

2.2.简单分析

由阶乘公式:n!=1* 2 * 3*……*n。可得出:
在这里插入图片描述

2.3.代码实现

#include<stdio.h>

int Fact(int n);
int main()
{
	int num;
	printf("请输入一个整数:");
	scanf("%d",&num);
	printf("%d的阶乘为%d。\n",num,Fact(num));
	return 0;
}
int Fact(int n)
{
	if(n>0)	
	return n*Fact(n-1);//当n>0时继续调用函数实现递归 
	else
	return 1;//当n=1时返回1 
} 

2.4.运行结果

在这里插入图片描述

2.5.画面推演

图1:
在这里插入图片描述
分析:
1.当输入5时向Fact()函数传入4;
2.之后又一次向Fact()函数传入3;
3.之后又一次向Fact()函数传入2;
4.之后又一次向Fact()函数传入1;
5.当传入值为1时返回1,然后回归原来函数如图所示,最后达到1* 2* 3* 4* 5的计算效果传到main函数完成阶乘的计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值