<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • c語言中階乘怎么表示(c語言實現n的階乘三種方法 )


    數的階乘,想必大家都不陌生,原理也很清楚,就是給定一個正整數,然后求出所有小于以及等于該正整數的積。

    這里我們要清楚幾點:

    1、負數沒有階乘,所以默認是正整數。

    2、0的階乘是1,這是人為規定的,只需要記住即可。

    那么,今天我們的重點是用C語言實現數的階乘,不過我提出了一個要求:利用我們前些天所學的知識,用函數以及遞歸函數的方法來實現數的階乘。

    這樣的話,既能幫助我們復習函數和遞歸函數的方法,也能鞏固我們的C語言基礎。

    在正式用C語言實現數的階乘前,我們先來理一理邏輯。

    數的階乘,除了0的階乘是1外,正整數的階乘就是所有小于以及等于它的積。

    給定一個數為5,那么5的階乘就是5!=1x2x3x4x5 = 120。

    這里我們需要用到一個循環,就是不停地遍歷比5小的數即可。

    遍歷出1、2、3、4、5之后,再不停地進行相乘。

    初始值為1,那么第一次相乘為1,第二次就是1與2相乘,直到第五次就是前四次相乘的積與5相乘,最終得到120。

    首先是給出流程圖,方便大家理解。

    用C語言實現數的階乘,是一個數學中常見的運算符號

    用三種方法進行代碼實現

    第一種:普通的直接在主函數中寫出所有代碼。

    用該方法就比較直觀了,就是遍歷給定數,從1開始到它本身,然后不停相乘,注意,我在這里一開始用了給定數來相乘,但其實這是有問題的,還是得從1開始,畢竟1的階乘是從1開始的。

    #include<stdio.h>
    int main()
    {
        int number;
        int factorial = 1;//因為factorial是階乘的英文
        scanf("%d", &number);
        for(int i=1; i<=number; i++) {
            factorial = i*factorial;//這樣是確保即便當number=0的時候,結果也為1
        }
         printf("%d ", factorial);
    }

    測試結果:

    用C語言實現數的階乘,是一個數學中常見的運算符號

    第二種:在主函數外寫一個子函數,然后在主函數內直接進行調用該子函數。

    #include<stdio.h>
    void factorial(){
        int number;
        int factorial = 1;//因為factorial是階乘的英文
        scanf("%d", &number);
        for(int i=1; i<=number; i++) {
            factorial = i*factorial;//這樣是確保即便當number=0的時候,結果也為1
        }
        printf("%d ", factorial);
    }
    int main()
    {
        factorial();//可以說,就是直接把主要代碼這部分給拎出來,然后在主函數調用
    }
    

    其實可以發現,這與我們上面的直接在主函數里寫的方法沒什么差別,唯一的區別就是看起來更加直觀一些,以及代碼錯落有致一點。

    測試結果:

    用C語言實現數的階乘,是一個數學中常見的運算符號

    第三種:在主函數外寫一個遞歸函數,也就是讓子函數不停調用它自身。

    與前兩個方法相比,遞歸函數顯然更好理解一些,也顯然讓代碼的利用率更高了,因為0的階乘是0,所以這應該單獨進行判斷,也就是得到結果為1,之后就是讓它本身與比它小的數相乘了。

    其實這個邏輯很好理解,給定數5,然后5去與factorial(4)相乘,同時factorial(4)又是4與factorial(3)相乘,與此推理下去,直到最小是與1相乘即可,那就滿足了從1開始到它本身的所有數相乘。

    #include<stdio.h>
    int factorial(int n){
        if(n<=0){
            return 1;
        }
        return n*factorial(n-1);//與比它小的正整數相乘
    }
    int main()
    {
        int number = 0;
        scanf("%d", &number);
        printf("%dn",factorial(number));
        //與之前相比,顯然變得更簡單了些
    }

    測試結果:

    用C語言實現數的階乘,是一個數學中常見的運算符號

    總結

    總的來說,階乘其實蠻簡單的,就是大家的思維要再打開一些,不要局限于只用一種方法來實現,多利用之前學過的一些方法,代碼的利用率還能變高,也能提升自己的編程能力。

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费