1.5.2 实例:求阶乘

本文通过一个实例展示了如何使用递归算法计算阶乘。通过分析代码,解释了递归调用的过程,并提醒读者阶乘结果超出整型变量范围可能导致错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.5.2 实例:求阶乘
理解递归算法最简单的例子就是:编写程序求n的阶乘(n!)。所谓阶乘,就是从1到指定数之间的所有自然数相乘的结果,或者说阶乘就是从数n到1之间的所有自然数相乘的结果,可写为以下算式:
n!=n*(n-1)*(n-2)*...... *2 * 1
例如,6的阶乘为:

6*5*4*3*2*1=720

由阶乘的算式可看出,阶乘运算可以直接使用循环来完成,也可以使用递归来进行计算。可以将n的阶乘分解为以下算式:
n!=n*(n-1)!
即n的阶乘等于n乘以n-1的阶乘。
同样,又可将n-1的阶乘分解为n-1乘以n-2的阶乘,算式如下:
(n-1)!=(n-1)*(n-2)!

n!=n*(n-1)*(n-2)!
这样,当将变量n逐步减小,到1时,就完成了递归操作,也就有了结束递归的条件。因此,可以使用递归算法来编写求阶乘的代码。

编程经验 像这种“将问题化为一个缩小了的子问题”的情况,就构成了递归调用,程序就可考虑使用递归算法来编写。

#include<stdio.h>
int fact(int n);//函数声明
3 int main()
{
int i;//定义变量
printf("请输入要求阶乘的一个整数");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值