gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章使用C语言求N的阶乘的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

用递归法求N的阶乘 。

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
 
#include <string.h>
 
#include <stdlib.h>
 
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代码 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
  
#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 <= len; j ++) { //str数组代表一个数,模拟与i相乘
       temp = str[j] * i + c;
       str[j] = temp % 10;
       c = temp / 10;
     }
     while (c > 0)
     {
       str[j ++] = c % 10;
       c /= 10;
     }
     len = j - 1;
   }
  
   for (i = len; i >= 1; i --) {
     printf ( "%d" , str[i]);
   }
   printf ( "\n" );
}

    /**************************************************************         Problem: 1076         User: wangzhengyi         Language: C         Result: Accepted         Time:2150 ms         Memory:916 kb     ****************************************************************/ 。

最后此篇关于使用C语言求N的阶乘的方法的文章就讲到这里了,如果你想了解更多关于使用C语言求N的阶乘的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com