• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用C语言求N的阶乘的方法

c语言 搞代码 4年前 (2022-01-06) 24次浏览 已收录 0个评论

这篇文章主要介绍了使用C语言求N的阶乘的方法,包括一道相关的ACM题目示例,需要的朋友可以参考下

用递归法求N的阶乘

程序调用自身称为递归( recursion).它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解.

递归的能力在于用有限的语句来定义对象的无限集合。

一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

 #include  #include  #include  long factorial(int n) { if(n == 1) return 1; else return n*factorial(n-1); } int main(int argc,char *argv[]) { int n = 0; if(argc != 2) { printf("input error,exit!!\n"); return -1; } n = atoi(argv[1]); printf("%d! = %ld\n",n,factorial(n)); return 0; } 

习题示例

题目

    题目描述: 
     输入一个正整数N,输出N的阶乘。 
    输入: 
    正整数N(0<=N<=1000) 
    输出: 
     输入可能包括多组数据,对于每一组输入数据,输出N的阶乘 
    样例输入: 
    4 
    5 
    15 
    样例输出: 
    24 
    120 
    1307674368000 

AC代码

 #include  #include  #include  #define MAX 3000 //存储每次阶乘运算的结果 int str[MAX]; void calculateFactorial(int n); int main() { int n; while (scanf("%d", &n) != EOF) { if(n == 0) { printf("1\n"); } else { calculateFactorial(n); } } return 0; } void calculateFactorial(int n) { int i, j, temp, c, len; memset(str, 0, sizeof(str)); str[1] = 1; for (i = 2, len = 1; i <= n; i ++) { //循环与2,3,..n相乘 for (j = 1, c = 0; j  0) { str[j ++] = c % 10; c /= 10; } len = j - 1; } for (i = len; i >= 1; i --) { printf("%d", str[i]); } printf("\n"); } 

   来源gaodai$ma#com搞$代*码网 /**************************************************************
        Problem: 1076
        User: wangzhengyi
        Language: C
        Result: Accepted
        Time:2150 ms
        Memory:916 kb
    ****************************************************************/

以上就是使用C语言求N的阶乘的方法的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用C语言求N的阶乘的方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址