C 语言范例 - 阶乘
一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。
自然数 n 的阶乘写作 n! 。
n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
使用 for 和 if 实现阶乘
/** * file: main.c * author: 简单教程(www.twle.cn) */ #include <stdio.h> int main() { int n, i; unsigned long long fact = 1; printf("输入一个整数: "); scanf("%d",&n); // 如果输入是负数,显示错误 if (n < 0) printf("Error! 负数没有阶乘"); else { for(i=1; i<=n; ++i) { fact *= i; } printf("%d! = %llu\n", n, fact); } return 0; }
编译运行范例,输出结果如下
$ gcc main.c && ./a.out 输入一个整数: 5 5! = 120
使用递归
/** * file: main.c * author: 简单教程(www.twle.cn) */ #include <stdio.h> long long fact(int n); int main() { int n; printf("输入一个整数: "); scanf("%d", &n); printf("%d! = %lld\n", n, fact(n)); return 0; } long long int fact(int n) { if (n >= 1) return n* fact(n-1); else return 1; }
编译运行范例,输出结果如下
$ gcc main.c && ./a.out 输入一个整数: 5 5! = 120