問題陳述:我們打算介紹階乘的基礎知識以及使用python計算數字的階乘。
的階乘是什麼?
簡單的單詞,如果你想找出一個正整數的階乘,不斷地將它與所有小於該數的正整數相乘。最後得到的結果是這個數的階乘。如果你想找出7的階乘,用7乘以所有小於7的正整數。這些數字是6 5 4 3 2 1。所有這些數乘以7,最後的結果是7的階乘。
如果您正在尋找Python階乘程序方麵的專業知識,可以考慮獲得認證。這Python階乘程序免費課程為你提供完整的專業指導,還有結業證書,這一定會讓你的簡曆脫穎而出。
公式!
一個數字的階乘用n表示!,是所有小於等於n的正整數的乘積:
n != n* (n - 1) *(2) *.....3 *2 *1
10 !
那麼10是多少呢?10與所有小於10的正整數相乘。
10 != 10 *9* 8 *7* 6 *5* 4 *3.* 2 * 1 = 3628800
5的階乘
找到5 !,重複同樣的過程。5與所有小於5的正整數相乘。這些數字是4 3 2 1
5 != 5 *4* 3 *2 *1 = 120
階乘(0)
因為0不是一個正整數,按照約定,0的階乘被定義為它本身。
0!= 1
計算這個是一個有趣的問題。讓我們想想為什麼簡單的乘法對計算機來說是有問題的。這個問題的答案在於如何實現解決方案。
1 != 1
2 != 2
5 != 120
10 != 3628800
20 != 2432902008176640000
30 !e = 9.332621544394418 + 157
數值的指數增長表明階乘是一個指數函數,計算它所花費的時間將是指數級的。
Python階乘程序
我們將通過三種方法來計算階乘:
- 使用數學模塊中的函數
- 迭代方法(使用for循環)
- 遞歸方法
階乘程序在python中使用的函數
這是用來計算一個數的階乘的最簡單的方法。這裏我們有一個名為math的模塊,它包含許多數學運算,可以使用該模塊輕鬆地執行這些運算。
import math num=int(input("輸入數字:"))print("factorial of ",num," (function): ",end=") print(math.factorial(num))
輸入—輸入號碼:4
輸出- 4的階乘(函數):24
階乘程序在python中使用for循環
def iter_factorial(n): factorial=1 n = input("輸入一個數字:")factorial=1 if int(n) >= 1: for i in range (1,int(n)+1): factorial= factorial * i return factorial num=int(input("輸入數字:"))print("factorial of ",num,"(迭代):",end=") print(iter_factorial(num))
輸入—輸入號碼:5
輸出- 5的階乘(迭代):120
考慮迭代程序。執行while循環需要很多時間。上麵的程序花了很多時間,我們說它是無限的。計算階乘的目的就是及時得到結果。因此,這種方法不適用於非常大的數字。
python中使用遞歸的階乘程序
函數使用遞歸返回一個數字的階乘""" if n == 1:返回n else:返回n*recur_factorial(n-1) num=int(input("輸入數字:"))print("factorial of ",num,"(遞歸):",end=") print(recur_factorial(num))
輸入—輸入—輸入號碼:4
輸出- 5的階乘(遞歸):24
在16GB RAM的計算機上,上麵的程序可以計算到2956的階乘值。除此之外,它會超過內存,因此失敗。與迭代方法相比,所花費的時間確實更少。但這是以占用空間為代價的。
解決上述問題的方法是什麼?
階乘計算問題具有高度的重複性結構。
為了計算階乘(4),我們計算f(3)一次,f(2)兩次,f(1)三次。隨著次數的增加,重複次數也會增加。因此,解決方案是計算一次該值,並將其存儲在一個數組中,以便在下次需要該值時訪問該值。因此,我們在這種情況下使用動態規劃。實現動態規劃的條件是
- 重疊子問題
- 最優子結構
考慮對上述代碼的修改如下:
def DPfact(N): arr={} if N in arr:返回arr[N] elif N == 0或N == 1:返回1 arr[N] = 1 else: factorial = N*DPfact(N - 1) arr[N] = factorial返回factorial num=int(input("Enter the number: ")) print("factorial of ",num," (dynamic): ",end=") print(DPfact(num))
輸入—輸入號碼:6
輸出- 6的階乘(動態):720
動態規劃解決方案在時間和空間複雜性方麵都具有很高的效率。
使用Python計算階乘中的尾隨零
問題陳述:使用Python計算一個數字的階乘中0的個數
num=int(input("Enter number: ")) #初始化結果count = 0 #保持n除以# 5的冪和# update count temp = 5 while (num / temp>= 1): count += int(num / temp) temp *= 5 #驅動程序打印("尾部零的數量",count)
輸出
輸入數字:5
尾隨零的個數1
學習如何找到如果字符串是回文.
學習如何打印Python中的斐波那契數列.同時,在線學習人工智能在人工智能課程的幫助下。
常見問題
什麼是數學階乘?
一個數的階乘,在數學中,是小於或等於一個給定正數的所有正整數的乘積,用該數字和感歎號表示。因此,的階乘七寫成四!意思是1 × 2 × 3 × 4等於24。的階乘0被定義為等於1。實數和負數的階乘不存在。
階乘的公式是什麼?
要計算一個數字N的階乘,使用這個公式:
階乘=1 x 2 x 3 x…x N-1 x N
Python中有階乘函數嗎?
是的,我們可以在python中導入一個名為math的模塊,它包含了幾乎所有的數學函數。用函數計算階乘,代碼如下:
import math num=int(input("輸入數字:"))print("factorial of ",num," (function): ",end=") print(math.factorial(num))
覺得這個博客有趣嗎?在線學習人工智能在Great Learning的Pbeplay2018官网GP人工智能和機器學習課程的幫助下,提高技能!
10