什么是阶乘
阶乘是指一个正整数n与n-1、n-2、n-3…….1的乘积,阶乘的符号是!,例如,5的阶乘写成 5!, 表示1x2x3x4x5=120。因此,当你在计算组合数时,就需要用到阶乘。
使用循环控制语句计算阶乘
C语言计算阶乘,可以使用循环控制语句,例如for循环、while和do-while循环。
使用for循环计算阶乘
使用for循环语句计算阶乘,需要定义一个变量来保存阶乘的结果值,让变量从1开始乘以范围内的每一个数字。
#include <stdio.h>
int main() {
int n, i;
unsigned long long result = 1;
printf("输入一个整数: ");
scanf("%d", &n);
for (i = 1; i <= n; ++i) {
result *= i;
}
printf("%d 的阶乘 = %llu", n, result);
return 0;
}
此代码演示了如何使用for循环计算阶乘,用户预先输入一个数字,程序计算并输出该数字的阶乘。运行该程序输出结果如下:
输入一个整数: 6
6 的阶乘 = 720
使用while循环计算阶乘
使用while循环语句计算阶乘,需要定义一个变量来保存阶乘的结果值,让变量从1开始乘以范围内的每一个数字。
#include <stdio.h>
int main() {
int n, i = 1;
unsigned long long result = 1;
printf("输入一个整数: ");
scanf("%d", &n);
while (i <= n) {
result *= i;
++i;
}
printf("%d 的阶乘 = %llu", n, result);
return 0;
}
此代码同样演示了如何使用while循环计算阶乘,用户预先输入一个数字,程序计算并输出该数字的阶乘。运行该程序输出结果如下:
输入一个整数: 6
6 的阶乘 = 720
使用do-while循环计算阶乘
使用do-while循环语句计算阶乘,需要定义一个变量来保存阶乘的结果值,让变量从1开始乘以范围内的每一个数字。
#include <stdio.h>
int main() {
int n, i = 1;
unsigned long long result = 1;
printf("输入一个整数: ");
scanf("%d", &n);
do {
result *= i;
++i;
} while (i <= n);
printf("%d 的阶乘 = %llu", n, result);
return 0;
}
此代码同样演示了如何使用do-while循环计算阶乘,用户预先输入一个数字,程序计算并输出该数字的阶乘。运行该程序输出结果如下:
输入一个整数: 6
6 的阶乘 = 720
使用递归函数计算阶乘
递归函数是指在函数内部调用函数本身的函数,使用递归函数计算阶乘,需要分两种情况,一种是n为0或1时,直接返回1;另一种是n大于1时,使用递归函数计算n-1的阶乘,然后将n乘以该结果。
#include <stdio.h>
unsigned long long factorial(unsigned int i) {
if(i <= 1) {
return 1;
}
return i * factorial(i - 1);
}
int main() {
int n;
printf("输入一个正整数: ");
scanf("%d", &n);
printf("%d 的阶乘为 %llu", n, factorial(n));
return 0;
}
此代码演示了如何使用递归函数计算阶乘,用户预先输入一个数字,程序计算并输出该数字的阶乘。运行该程序输出结果如下:
输入一个正整数: 6
6 的阶乘为 720
结论
C语言计算阶乘有多种方法,使用循环控制语句计算阶乘需要注意变量的范围和运算顺序,使用递归函数计算阶乘需要注意边界条件和递归条件,合理选择方法可以使程序更加高效、简洁。