尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
不關注《一碳科技》?那麼你會錯過很多乾貨哦!
前言
各位粉絲,實在是不好意思啦,從上一篇文章的發布距今已經有一個多星期了,不是不想發,而是實在太忙了,一直忙著跟舍友開發購物網站,一人擔起技術的「重擔」。雖然隔了好幾天沒有發布新的文章,但是陸陸續續還是有一些粉絲私信拿源碼的,所以小編今天就抽空給大帶來一篇簡單的C教程文章——求數N的階乘。
這個比較簡單,各位就當做娛樂板塊來看啦
首先,我們來捋一捋,求數N的階乘,無非就是N(N-1)(N-2)(N-3)…1,從這里我們可以發現一個規律,後面的一個數總比前面一個數少1,並且最後一個數字為1,他們跟公差為1的等差數列有點相似,所以我們很快就能想到用遞歸來解決這個問題。
但是我們如何利用遞歸呢?我可以從上面這個問題得知,遞歸函數的邊界條件為:當N變成1時,所以我們可以結合以上兩點得出遞歸函數的大概模型。
自身調用自身
利用遞歸函數自身調用自身的這一特點,我們可以設計一個函數,這個函數是我們所要求階乘的數N,並且它的返回值為當前N的值乘上(N-1)的階乘的值,當N減少到1是,處罰邊界條件開始返回,當它返回到第一級函數時,我們用printf()函數來輸出N的階乘!N。
簡單的算法
小編的這個求階乘的函數很簡單,僅僅由三行代碼組成,所以基礎不好的小夥伴也不用過於擔心。
首先在函數里面寫一個IF判斷,判斷是否達到邊界條件,如果沒有達到則進入下一步。這個函數接受一個int類型的參數,也就是我們要求階乘的數N,以下是該函數的代碼。
結果測試
通過調試,我們可以看到正確的結果,例如這里小編算的是10的階乘,而程序輸出的答案很明顯:3628800,通過查詢這個結果是對的,小夥伴也可以親自算一下哦。
新的乾貨
小編最近可能發布一些web前端開發的小乾貨哦,對這方面有興趣的可以關注《一碳科技》,即使掌握最新咨詢!