c语言怎么计算n的阶乘

什么是阶乘

阶乘是指一个正整数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语言计算阶乘有多种方法,使用循环控制语句计算阶乘需要注意变量的范围和运算顺序,使用递归函数计算阶乘需要注意边界条件和递归条件,合理选择方法可以使程序更加高效、简洁。

后端开发标签