編譯程序python階乘函數
Ⅰ python 編寫一個使階乘計算器的程序 求助
用!表示階乘,不重置的話,計算出來的是1!+1!2!+1!2!3!+1!2!3!4!+1!2!3!4!5!, 所以是34863。因為不重置,每次都在前一項的基礎上乘了一個i!,但是我們只需要在前一項的基礎上乘以i就行了,所以多乘了。重置的話,雖然是正確的,但是多此一舉嘛,搞什麼二重循環?覺得cpu太快了么?已經算好4!了,算5!的階乘,只需要在4!上乘以5就行了,非得重置為1,然後再乘1 2 3 4 5,太浪費了……正常的寫法應該是:int n=0, a=1;for (int i=1; i<=5; i++){ a*=i; n+=a;}
Ⅱ Python程序求階乘
deflittle_than_50(x):
ifx<=50:
returnTrue
else:
returnFalse
defcalculate_factorial(x):
ifx<=1:
return1
else:
returnx*calculate_factorial(x-1)
whileTrue:
n=int(input(":"))
iflittle_than_50(n):
break
else:
print("{}isoutofrange,pleaseinputagain!".format(n))
print("Thefactorialof{}is{}".format(n,calculate_factorial(n)))
Ⅲ python求n的階乘代碼
l利用遞歸來實現。1、當n=0時,n!=1; 當n不等於0時,n!=n*(n-1)!
2、定義一個函數f(n)來實現遞歸:
3、例如求5的階乘,m= f(5),print(m),運行結果為120。
具體代碼如圖:
求n的階乘
Ⅳ python編寫程序n的階乘
階乘一般都用遞歸來實現,具體如下:
效果
這個函數只能識別整數,即使輸入10.0也會報錯。
打字不易,望採納!!!
具體代碼如下!!!
def factorial(n):
data_type = isinstance(n, int)
if n < 0:
raise Exception("請輸入一個正整數!!!")
elif data_type == False:
raise Exception("請輸入一個整數!!!")
elif n == 0:
return 1
elif n == 1:
return 1
elif n > 1:
return n * factorial(n-1)
Ⅳ python中n的階乘的演算法
我的代碼是
#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
Ⅵ python沒有自己算階乘的函數嗎
公式:n!=n*(n-1)!階乘的計算方法階乘指從1乘以2乘以3乘以4一直乘到所要求的數。例如所要求的數是4,則階乘式是1×2×3×4,得到的積是24,24就是4的階乘。例如所要求的數是6,則階乘式是1×2×3×..×6,得到的積是720,720就是6的階乘。例如所要求的數是n,則階乘式是1×2×3×…×n,設得到的積是x,x就是n的階乘。階乘的表示方法在表達階乘時,就使用「!」來表示。如x的階乘,就表示為x!他的原理就是反推,如,舉例,求10的階乘=10*9的階乘(以後用!表示階乘)那麼9!=?,9!=9*8!,8!=8*7!,7!=7*6!,6!=6*5!,5!=5*4!,4!=4*3!,3!=3*2!,2!=2*1!,1的階乘是多少呢?是11!=1*1,數學家規定,0!=1,所以0!=1!然後在往前推算,公式為n!(n!為當前數所求的階乘)=n(當前數)*(n-1)!(比他少一的一個數N-1的階乘把公式列出來像後推,只有1的!為1,所以要從1開始,要知道3!要知道2!就要知道1!但必須從1!開始推算所以要像後推,如果遍程序演算法可以此公式用一個函數解決,並且嵌套調用次函數,,)把數帶入公式為,1!=1*12!=2*1(1!)3!=3*2(2!)4=4*6(3!),如果要是編程,怎麼解決公式問題呢首先定義演算法//演算法,1,定義函數,求階乘,定義函數fun,參數值n,(#include<stdio.h>longfun(intn)//long為長整型,因20!就很大了超過了兆億(數學家定義數學家定義,0!=1,所以0!=1!,0與1的階乘沒有實際意義)2,函數體判斷,如果這個數大於1,則執行if(n>1)(往回退算,這個數是10求它!,要從2的階乘值開始,所以執行公式的次數定義為9,特別需要注意的是此處,當前第一次寫入代碼執行,已經算一次)求這個數的n階乘(公式為,n!=n*(n-1)!,並且反回一個值,return(n*(fun(n-1));(這個公式為,首先這個公式求的是10的階乘,但是求10的階乘就需要,9的階乘,9的階乘我們不知道,所以就把10減1,也就是n-1做為一個新的階乘,從新調用fun函數,求它的階乘然後在把這個值返回到fun(n-1),然後執行n*它返回的值,其實這個公式就是調用fun函數的結果,函數值為return返回的值,(n-1)為參數依次類推,...一值嵌套調用fun函數,到把n-1的值=1,注意:此時已經運行9次fun()函數算第一次運行,,調用幾次fun函數呢?8次函數,所以,n-1執行了9次,n-1=1,n=2已經調用就可以求2乘階值
Ⅶ python編寫n的階乘
一個整數的階乘就是所有小於等於該數字的正整數的積。舉例說明3的階乘就是3*2*1。
電腦:WIN10
軟體:ISO
軟體:python
1、用def代碼創建一個函數,名稱為func,參數為n
def func(n):
Ⅷ 用python怎麼求15的階乘
可以用循環loop或遞歸來(recursion)來解決類似問題
應用loop:
deffactorial_loop(n):
res = 1
for i in range((1,n+1):
res *= i
return res
print factorial(15)
2. recursion
def factorial_recursion(n):
if n <= 1:
return 1
return n*factorial_recursion(n-1)
print factorial_recursion(15)
#>>>1307674368000
此外還可以利用python math庫里的factorial函數直接獲得:
import math
print math.factorial(15)
#>>>1307674368000
最後請注意如下幾點:
以上代碼請手動敲入python文檔中,直接會考入python不能識別的一些字元導致程序報錯。
以上代碼僅適用於 Python 2.X, Python 3.X 在某些地方語法會略有不同
Ⅸ python怎麼求階乘
解法1
數組解法牛。
首先定義一個ns數組用來存儲n!的各個位數上的數值,利用for循環給ns加入10000個0值,以方便後面直接根據index對數組進行操作。
然後定義length作為 「數組的長度」(有真實數值的而非自動添加的0) 也即n!的結果的位數。
之後也必須用到for循環進行累乘,但跟解法一的直接累乘不同,這里是乘數(即i)跟各個位上的數分別相乘,若結果大於等於10則carry>0即向前進一位數值為carry,若j循環結束後carry>0則說明需要在當前ns的「長度」上進一位,所以length+1即位數+1,這里carry起的就是判斷是否進位的作用,而length則代表著結果的位數。
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 carry>0:
###ns[length] += carry%10
###length+=1
###carry = int(carry/10)
while length>0:
#length -=1
#print(ns[length],end='')
把# 替換為空格就可以運行。
如輸入1000,計算1000!
解法2
print()
m=int(input("計算m!,請輸入整數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^{b}')
Ⅹ 求階乘python方法
def recursion(n):
if n==1:
return 1
else:
return n*recursion(n-1)
list=[]
#定義一個空的列表,將調用遞歸函數生成的階乘值追加到列表
print("將1-10的階乘寫入列表,使用sum函數求和") #顯示效果明顯
for i in range(1,11):
list.append(recursion(i))# 將調用遞歸函數生成的階乘值追加到列表
print(sum(list)) #列表求和
sum_0=0
#顯示效果明顯,center(80,"*")標題放置位置
print("for循環直接調用遞歸函數求和".center(80,"*"))
for i in range(1,11):
sum_0 +=recursion(i)
print(sum_0)
這是1-10的階乘求和,你可以參考下!
輸出的結果