res = 1
成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比黔西網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式黔西網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋黔西地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
for i in range(1, 11): #1~10的階乘
ress *= i
print(res)
1 math.factorial(x)
用python計(jì)算n的階乘的方法!(含示例代碼)
2. reduce函數(shù)
用python計(jì)算n的階乘的方法?。ê纠a)
3. 遞歸實(shí)現(xiàn)
#python 3.6.4
sum = 0
temp=1
shu = int(input("請(qǐng)輸入所求的一個(gè)數(shù)階乘倒數(shù)的累加和: "))
for i in range(1, shu+1):
temp=temp*i
sum=sum+1.0/temp?
print("1!+2!+.....+{0}={1}".format(shu,sum))
測(cè)試:
請(qǐng)輸入所求的一個(gè)數(shù)階乘倒數(shù)的累加和: 1
1!+2!+.....+1=1.0
請(qǐng)輸入所求的一個(gè)數(shù)階乘倒數(shù)的累加和: 2
1!+2!+.....+2=1.5
請(qǐng)輸入所求的一個(gè)數(shù)階乘倒數(shù)的累加和: 3
1!+2!+.....+3=1.6666666666666667
請(qǐng)輸入所求的一個(gè)數(shù)階乘倒數(shù)的累加和: 10
1!+2!+.....+10=1.7182818011463847
請(qǐng)輸入所求的一個(gè)數(shù)階乘倒數(shù)的累加和: 100
1!+2!+.....+100!=1.7182818284590455
#n充分大,結(jié)果就是e-1(e=2.718281828...)
解法1
數(shù)組解法牛。
首先定義一個(gè)ns數(shù)組用來(lái)存儲(chǔ)n!的各個(gè)位數(shù)上的數(shù)值,利用for循環(huán)給ns加入10000個(gè)0值,以方便后面直接根據(jù)index對(duì)數(shù)組進(jìn)行操作。
然后定義length作為 “數(shù)組的長(zhǎng)度”(有真實(shí)數(shù)值的而非自動(dòng)添加的0) 也即n!的結(jié)果的位數(shù)。
之后也必須用到for循環(huán)進(jìn)行累乘,但跟解法一的直接累乘不同,這里是乘數(shù)(即i)跟各個(gè)位上的數(shù)分別相乘,若結(jié)果大于等于10則carry0即向前進(jìn)一位數(shù)值為carry,若j循環(huán)結(jié)束后carry0則說(shuō)明需要在當(dāng)前ns的“長(zhǎng)度”上進(jìn)一位,所以length+1即位數(shù)+1,這里carry起的就是判斷是否進(jìn)位的作用,而length則代表著結(jié)果的位數(shù)。
n= int(input())
ns = [0 for i in range(10000) ]
n= int(input())
ns = [0 for i in range(10000) ]
length = 1
ns[0] = length = 1
if n=2:
#for i in range(2,n+1):
##carry = 0
##for j in range(length):
###temp = ns[j] * i + carry
###carry = int(temp/10)
###ns[j] = temp % 10
##while carry0:
###ns[length] += carry%10
###length+=1
###carry = int(carry/10)
while length0:
#length -=1
#print(ns[length],end='')
把# 替換為空格就可以運(yùn)行。
如輸入1000,計(jì)算1000!
解法2
print()
m=int(input("計(jì)算m!,請(qǐng)輸入整數(shù)m:"))
import math
a=sum([math.log10(i) for i in range(1,m+1)])
b=int(a)
c=a-b
print(f'{m}!={10**c}*10^')
一個(gè)整數(shù)的階乘就是所有小于等于該數(shù)字的正整數(shù)的積。舉例說(shuō)明3的階乘就是3*2*1。
電腦:WIN10
軟件:ISO
軟件:python
1、用def代碼創(chuàng)建一個(gè)函數(shù),名稱為func,參數(shù)為n
def func(n):
2、創(chuàng)建一個(gè)變量res,賦值為函數(shù)的參數(shù)n,代碼如下:
res = n。
3、然后寫(xiě)入for range循環(huán),具體代碼如下:
for i in range(1,n):
4、接下來(lái)在for循環(huán)當(dāng)中進(jìn)行計(jì)算并且返回res,具體代碼如下:
res *= i
return res。
5、用print代碼打印輸出3的階乘,代碼如下:
print(func(3))。
6、以上代碼實(shí)現(xiàn)了階乘的運(yùn)算,另外我們還可以用遞歸的方式進(jìn)行。代碼如下:
def func1(n):
if n==1:
return 1
else:
return n *func1(n-1)
print(func1(3))
遞歸方式是函數(shù)自己調(diào)用自己。
python不鼓勵(lì)遞歸,請(qǐng)看這個(gè)函數(shù)的遞歸版(def sn_recursion)和非遞歸版(def sn)的代碼對(duì)比: