<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

            如何使用C語言求N的階乘

            時間:2025-12-03 09:52:37 C語言 我要投稿

            如何使用C語言求N的階乘

              使用C語言求N的階乘的方法是很多小伙伴都想知道的,下面小編給大家介紹如何使用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!! ");
               return -1;
             }
             n = atoi(argv[1]);
             printf("%d! = %ld ",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
             
            /pic/span>
            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 ++) { /pic/code>
               for (j = 1, c = 0; j <= len; j ++) { /pic/code>
                 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語言求N的階乘】相關文章:

            C語言EOF如何使用10-16

            C語言中如何使用sscanf10-14

            如何使用C語言數組指針09-13

            如何使用C語言開發DSP系統12-12

            C語言中如何使用隨機數02-18

            C語言if語句的使用11-18

            C語言typedef的使用09-24

            C語言變量的使用08-26

            C語言的內存使用03-06

            • 相關推薦

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院