C语言:函数递归

目录

一、递归

1.1 递归的思想

1.2 递归的限制

二、递归举例

2.1 举例1:求n的阶乘

 画图推演

2.2 举例2:顺序打印一个整数的每一位

画图推演

​编辑  三、递归和迭代


一、递归

     递归是学习C语言函数绕不开的⼀个话题,那什么是递归呢?递归其实是⼀种解决问题的方法,在C语言中,递归就是函数自己调用自己。

写⼀个史上最简单的C语言递归代码:

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

      上述就是一个简单的递归程序,只不过上面的递归只是为了演示递归的基本形式,不是为了解决问题,代码最终也会陷入死递归,导致栈溢出。

1.1 递归的思想

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

    递归中的递就是递推的意思,归就是回归的意思,接下来慢慢来体会。

1.2 递归的限制

    递归在书写的时候,有2个必要条件:

• 递归存在限制条件,当满足这个限制条件的时候,递归便不再继续。

• 每次递归调用之后越来越接近这个限制条件。

二、递归举例

2.1 举例1:求n的阶乘

一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。

自然数n的阶乘写作n!。

题目:计算n的阶乘(不考虑溢出),n的阶乘就是1~n的数字累积相乘。

我们知道n的阶乘的公式:n! =  n ∗ (n − 1)! 

举例:
 5! = 5*4*3*2*1
 4! = 4*3*2*1 
 所以:5! = 5*4!

     这样的思路就是把⼀个较大的问题,转换为⼀个与原问题相似,但规模较小的问题来求解的。 

当 n==0 的时候,n的阶乘是1,其余n的阶乘都是可以通过公式计算。

n的阶乘的递归公式如下:

评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值