我的代碼是
#encoding=utf-8
s=1
n=int(input("請輸入一個整數n:"))
for i in range(1,n+1):
s=s*i
print(n,"!=",s)
結果:
python3 a.py
請輸入一個整數n:5
5 != 120
② 求n階乘的函數
n階乘的函數可以用遞歸或循環的方式實現。在Python中,可以使用內建的`math`庫的`factorial`函數計算n的階乘。除此之外,也可以使用循環結構進行手動計算。
解釋:
階乘是一個數學概念,表示一個正整數與比它小的所有正整數的乘積。例如,5階乘等於5乘以4乘以3乘以2乘以1,即5! = 5 × 4 × 3 × 2 × 1 = 120。計算階乘的函數可以用多種方式實現。以下是兩種常見的實現方式:
遞歸實現:遞歸是一種編程技巧,函數通過調用自身來解決問題。在計算階乘時,可以定義一個遞歸函數,從n開始遞減,每次遞歸調用時將結果與下一個較小的數字相乘,直到遞歸到1為止。這種方法的優點是代碼簡潔,但可能會因為遞歸次數過多而導致棧溢出。
循環實現:另一種常見的實現方式是使用循環結構。通過初始化一個變數為n,然後在循環中每次將該變數乘以比它小的數字,最終得到階乘的結果。這種方法相對更加直觀和穩定,不容易出現棧溢出的問題。
在Python語言中,可以直接使用內建的`math`庫中的`factorial`函數來計算階乘,非常方便。如果不使用內建函數,可以根據上述的遞歸或循環原理自行編寫函數實現階乘計算。在實際應用中,可以根據具體需求和性能要求選擇合適的方法。
③ 輸入n 計算n的階乘,要用遞歸演算法,python,謝謝大神!
deffact(n):
ifn==0:
return1
else:
returnn*fact(n-1)
n=int(input())
print(fact(n))
④ python中如何用for語句寫出從1的階乘到20的階乘的加和
def sum_factorial(start, stop):
# 遞歸求階乘
def factorial(n):
if n == 0: return 1
return n * factorial(n-1)
# 生成器解析式生成各個數的階乘,然後再求和
return sum(factorial(i) for i in range(start, stop+1))
# 調用函數,測試代碼
print(sum_factorial(1, 20))
在不調用庫的情況下,最容易想到的就是循環裡面套循環,不過這樣子佔用時間為O(n^2)。當然你這里也就n=20,兩層循環沒啥問題,不過當n足夠大時,可以考慮用演算法。
遞歸演算法佔用時間為O(n),一個for循環為O(stop+1-start),兩者相加,比兩層循環效率高,當然這也是在n足夠大的時候,才談效率。