阶乘是一个数学概念,表示一个正整数的连乘积,5的阶乘(记作5!)是1*2*3*4*5=120,在C语言中,我们可以使用循环或递归的方式来求解阶乘,下面我将分别介绍这两种方法。
(图片来源网络,侵删)
使用循环求阶乘
1、我们需要定义一个变量来存储阶乘的结果,以及一个循环变量来遍历从1到给定数的所有整数。
#include <stdio.h> int main() { int n, i; long long factorial = 1; // 使用long long类型来存储阶乘结果,避免溢出 printf("请输入一个正整数:"); scanf("%d", &n);
2、接下来,我们使用for循环遍历从1到n的所有整数,并将它们累乘到factorial变量中。
for (i = 1; i <= n; i++) { factorial *= i; }
3、我们输出阶乘的结果。
printf("%d的阶乘为:%lld ", n, factorial); return 0; }
将以上代码整合到一起,完整的程序如下:
#include <stdio.h> int main() { int n, i; long long factorial = 1; // 使用long long类型来存储阶乘结果,避免溢出 printf("请输入一个正整数:"); scanf("%d", &n); for (i = 1; i <= n; i++) { factorial *= i; } printf("%d的阶乘为:%lld ", n, factorial); return 0; }
使用递归求阶乘
1、我们需要定义一个递归函数来计算阶乘,在这个函数中,我们需要传入两个参数:一个是待求阶乘的正整数n,另一个是当前计算到的阶乘值,初始时,我们将当前阶乘值设置为1。
#include <stdio.h> long long factorial(int n, long long current) { if (n == 1) { // 当n等于1时,返回当前阶乘值作为结果 return current; } else { // 否则,将当前阶乘值乘以n1的阶乘,并继续递归调用factorial函数 return factorial(n 1, current * n); } }
2、在main函数中,我们调用这个递归函数来计算阶乘,我们需要输入一个正整数n,我们调用factorial函数,传入n和1作为参数,我们输出阶乘的结果。
int main() { int n; printf("请输入一个正整数:"); scanf("%d", &n); printf("%d的阶乘为:%lld ", n, factorial(n, 1)); // 调用factorial函数计算阶乘,并输出结果 return 0; }
将以上代码整合到一起,完整的程序如下:
#include <stdio.h> long long factorial(int n, long long current) { if (n == 1) { // 当n等于1时,返回当前阶乘值作为结果 return current; } else { // 否则,将当前阶乘值乘以n1的阶乘,并继续递归调用factorial函数 return factorial(n 1, current * n); } } int main() { int n; printf("请输入一个正整数:"); scanf("%d", &n); printf("%d的阶乘为:%lld ", n, factorial(n, 1)); // 调用factorial函数计算阶乘,并输出结果 return 0; }
原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/378035.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复