遞迴 求N!的階乘

2021-10-17 03:09:56 字數 942 閱讀 1727

用遞迴演算法,求n!的精確值(n以一般整數輸入,n<100)。

輸入乙個整數n

輸出n!

10
10!=3628800
顯然100資料規模的階乘是無法用longlong存下的,所以我選擇用陣列來模擬大數乘法,具體**實現是從社團學姐那裡學到的,這裡附上我的理解:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define max 10001

#define ll long long int

#define scf(a) scanf("%d", &a)

#define mms(a) memset(a, 0, sizeof(a))

using

namespace std;

int num[

100]

, endn =0;

void

bignum

(int n)

while

(temp)

//如果乘完了但是temp不為0,則還需要進製

bignum

(n -1)

;//遞迴繼續與n-1相乘

}int

main()

}

一開始發現long long不夠用的時候,我第一反應也是用陣列來模擬乘法,但是當時腦子裡一直想的都是列豎式計算的時候的進製方法,也就是一位一位的去跟所有數乘,然後每次只會進一位。在看了學姐的**之後才恍然大悟,可以每次直接用n去和陣列的每一位數字相乘,多出來的數全部進製就好,不用顧忌「進製的數有好幾位怎麼辦」這樣愚蠢的問題。。。

遞迴方法求n 階乘

遞迴的定義 在定義乙個過程或函式時,出現呼叫本過程或者是本函式的成分,稱之為遞迴。通常需要用到遞迴的方法 定義是遞迴的。例如n fibonacci數列問題 資料結構是遞迴的 單鏈表的資料結構,二叉樹的資料結構 問題的求解方式是遞迴的 漢諾塔問題 用遞迴和非遞迴兩種方式求n 問題 include in...

C語言 遞迴求n的階乘

例30 c語言求n!要求用遞迴實現。解題思路 本題和例29思想差不多,都是用遞迴來實現,讀者可以回顧一下 c語言遞迴求年齡 求階乘函式 int factorial int number 自定義階乘函式 else if number 0 number 1 0或者1本身的階乘是1 else return...

C語言 遞迴求n的階乘

例30 c語言求n!要求用遞迴實現。解題思路 本題和例29思想差不多,都是用遞迴來實現,讀者可以回顧一下 c語言 遞迴求年齡 求階乘函式 int factorial int number 自定義階乘函式 else if number 0 number 1 0或者1本身的階乘是1 else retur...