如何用C语言编写一个计算阶乘的长尾函数?
- 内容介绍
- 相关推荐
本文共计502个文字,预计阅读时间需要3分钟。
C语言实现阶乘的方法如下:
c#include
// 函数声明unsigned long long factorial(int n);
int main() { int number; printf(请输入一个数:); scanf(%d, &number); printf(%d的阶乘是:%llu\n, number, factorial(number)); return 0;}
// 函数定义unsigned long long factorial(int n) { if (n <=1) { return 1; } else { return n * factorial(n - 1); }}
c语言实现阶乘的方法
从键盘输入一个数,求出这个数的阶乘,即 n!。
算法思想
首先要清楚阶乘定义,所谓 n 的阶乘,就是从 1 开始乘以比前一个数大 1 的数,一直乘到 n,用公式表示就是:1×2×3×4×…×(n-2)×(n-1)×n=n!
具体的操作:利用循环解决问题,设循环变量为 i,初值为 1,i 从 1 变化到 n;依次让 i 与 sum 相乘,并将乘积赋给 sum。
① 定义变量 sum,并赋初值 1。
② i 自增 1。
③ 直到 i 超过 n。
程序代码
#include <stdio.h> int main() { int i,n; double sum=1; scanf("%d",&n); for(i=1;i<=n;i++) sum=sum*i; printf("%d!=%lf",n,sum); printf("\n"); return 0; }
调试运行结果
输入 5,对应的阶乘输出情况如下所示;
5 5!=120.000000
输入20,对应的阶乘输出情况如下所示:
20 20!=2432902008176640000.000000
总结
① 由于阶乘一般较大,会超出整型甚至是长整型所能表示的范围,因此定义变量时就不能定义为整型,而应该考虑双精度数。
② 实训中定义了一个双精度型的变量,用来存放结果。因此在输出时应注意双精度数的输出格式。
推荐教程:c语言教程
以上就是c语言实现阶乘的方法的详细内容,更多请关注自由互联其它相关文章!
本文共计502个文字,预计阅读时间需要3分钟。
C语言实现阶乘的方法如下:
c#include
// 函数声明unsigned long long factorial(int n);
int main() { int number; printf(请输入一个数:); scanf(%d, &number); printf(%d的阶乘是:%llu\n, number, factorial(number)); return 0;}
// 函数定义unsigned long long factorial(int n) { if (n <=1) { return 1; } else { return n * factorial(n - 1); }}
c语言实现阶乘的方法
从键盘输入一个数,求出这个数的阶乘,即 n!。
算法思想
首先要清楚阶乘定义,所谓 n 的阶乘,就是从 1 开始乘以比前一个数大 1 的数,一直乘到 n,用公式表示就是:1×2×3×4×…×(n-2)×(n-1)×n=n!
具体的操作:利用循环解决问题,设循环变量为 i,初值为 1,i 从 1 变化到 n;依次让 i 与 sum 相乘,并将乘积赋给 sum。
① 定义变量 sum,并赋初值 1。
② i 自增 1。
③ 直到 i 超过 n。
程序代码
#include <stdio.h> int main() { int i,n; double sum=1; scanf("%d",&n); for(i=1;i<=n;i++) sum=sum*i; printf("%d!=%lf",n,sum); printf("\n"); return 0; }
调试运行结果
输入 5,对应的阶乘输出情况如下所示;
5 5!=120.000000
输入20,对应的阶乘输出情况如下所示:
20 20!=2432902008176640000.000000
总结
① 由于阶乘一般较大,会超出整型甚至是长整型所能表示的范围,因此定义变量时就不能定义为整型,而应该考虑双精度数。
② 实训中定义了一个双精度型的变量,用来存放结果。因此在输出时应注意双精度数的输出格式。
推荐教程:c语言教程
以上就是c语言实现阶乘的方法的详细内容,更多请关注自由互联其它相关文章!

