欧美日韩不卡一区二区三区,www.蜜臀.com,高清国产一区二区三区四区五区,欧美日韩三级视频,欧美性综合,精品国产91久久久久久,99a精品视频在线观看

C語(yǔ)言

如何使用C語(yǔ)言求N的階乘

時(shí)間:2025-03-23 13:03:37 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

如何使用C語(yǔ)言求N的階乘

  使用C語(yǔ)言求N的階乘的方法是很多小伙伴都想知道的,下面小編給大家介紹如何使用C語(yǔ)言求N的階乘,歡迎閱讀!

  用遞歸法求N的階乘

  程序調(diào)用自身稱(chēng)為遞歸( recursion).它通常把一個(gè)大型復(fù)雜的問(wèn)題層層轉(zhuǎn)化為一個(gè)與原問(wèn)題相似的規(guī)模較小的問(wèn)題來(lái)求解.

  遞歸的能力在于用有限的語(yǔ)句來(lái)定義對(duì)象的無(wú)限集合。

  一般來(lái)說(shuō),遞歸需要有邊界條件、遞歸前進(jìn)段和遞歸返回段。當(dāng)邊界條件不滿(mǎn)足時(shí),遞歸前進(jìn);當(dāng)邊界條件滿(mǎn)足時(shí),遞歸返回。

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!! ");
   return -1;
 }
 n = atoi(argv[1]);
 printf("%d! = %ld ",n,factorial(n));
 return 0;
}

  習(xí)題示例

  題目

  題目描述:

  輸入一個(gè)正整數(shù)N,輸出N的階乘。

  輸入:

  正整數(shù)N(0<=N<=1000)

  輸出:

  輸入可能包括多組數(shù)據(jù),對(duì)于每一組輸入數(shù)據(jù),輸出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
 
//存儲(chǔ)每次階乘運(yùn)算的結(jié)果
int str[MAX];
 
void calculateFactorial(int n);
 
int main()
{
 int n;
 
 while (scanf("%d", &n) != EOF) {
   if(n == 0) {
     printf("1 ");
   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 ++) { //循環(huán)與2,3,..n相乘
   for (j = 1, c = 0; j <= len; j ++) { //str數(shù)組代表一個(gè)數(shù),模擬與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(" ");
}

  /**************************************************************

  Problem: 1076

  User: wangzhengyi

  Language: C

  Result: Accepted

  Time:2150 ms

  Memory:916 kb


【如何使用C語(yǔ)言求N的階乘】相關(guān)文章:

C語(yǔ)言EOF如何使用05-01

如何使用C語(yǔ)言數(shù)組指針04-27

C語(yǔ)言中如何使用sscanf04-12

如何使用C語(yǔ)言開(kāi)發(fā)DSP系統(tǒng)12-12

C語(yǔ)言中如何使用隨機(jī)數(shù)02-18

C語(yǔ)言的內(nèi)存使用03-06

C語(yǔ)言變量的使用03-30

C語(yǔ)言typedef的使用05-30

C語(yǔ)言for循環(huán)的使用04-05