今天我們來學(xué)習(xí)階乘n!,階乘是基斯頓·卡曼于 1808年發(fā)明的運算符號。一個正整數(shù)的階乘(factorial)是所有小于及等于該數(shù)的正整數(shù)的積,且0的階乘為1。自然數(shù)n的階乘寫作n!,即n!=1×2×3×…×(n-1)×n。比如4!=4×3×2×1。
下面我們把累加和階乘相結(jié)合,用Python計算出1!+2!+3!+…+20!的和。
第一步先找到階乘的計算規(guī)律,用程序列出從1到20的參與階乘所需的數(shù)字(如圖1),把需要相乘的數(shù)字分行羅列出來,你從圖中發(fā)現(xiàn)了什么規(guī)律(如圖2)?
從圖2中我們不難發(fā)現(xiàn)后一行比前一行每次都會多出一個數(shù)字。從最初的一個數(shù)字一直到最后一行二十個數(shù)字。
數(shù)列已經(jīng)羅列出來了,那么計算出每行數(shù)相乘的積,并把它們都加起來就得出結(jié)果了。具體方法給你一個小的提示,可以采用保存變量的方法。由小到大累加每次階乘的值,隨著階乘數(shù)值的增加隨時求和,直到最后計算完20!,得出總和(如圖3)。注意希望函數(shù)range()中生成數(shù)列是1到20,需要多寫一個range(1,21)才符合需要。
分析一下代碼,分別設(shè)置三個變量,N、S、T。
N是一個循環(huán),循環(huán)的范圍在1到20之間,目的是為了實現(xiàn)逐步遞增的效果。
T作為中間的變量,存儲每次階乘的值,每次每行計算出來的值都保存在T中。
S用來把每次階乘的值(也就是T的值)累加起來。循環(huán)結(jié)束,打印出結(jié)果。
課后給大家出個拓展練習(xí):
這道題既有階乘的乘法又有階乘的加法。請你動手敲敲代碼試試看吧。