python不鼓勵(lì)遞歸,請(qǐng)看這個(gè)函數(shù)的遞歸版(def sn_recursion)和非遞歸版(def sn)的代碼對(duì)比:
成都創(chuàng)新互聯(lián)專注于察雅網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供察雅營銷型網(wǎng)站建設(shè),察雅網(wǎng)站制作、察雅網(wǎng)頁設(shè)計(jì)、察雅網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造察雅網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供察雅網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
以下提供兩種方法 供參考,第一種方式為自己構(gòu)造求階乘的函數(shù),第二種則直接使用了Python標(biāo)準(zhǔn)庫,代碼如下:
一、
自己構(gòu)造階乘函數(shù)
from functools import reduce
def factorial(n):
l = range(1,n+1)
result = reduce(lambda x,y:x*y,l)
return result
for i in range(1,6): print('{}! = {}'.format(i, factorial(i)))
二、
Python標(biāo)準(zhǔn)庫
from math import factorial
for i in range(1,6):
print("{}! = {}".format(i,factorial(i)))
兩段程序輸出一樣,如下:
def?jiezheng(n):
if?n==1?or?n==0:
return?1
return?n*jiezheng(n-1)
遞歸調(diào)用函數(shù)jiezheng算階乘
jiezheng(5)
返回120
按照題目要求編寫的Python的階乘遞歸程序如下
def jiecheng(n):
if n==1:
return 1
else:
return n*jiecheng(n-1)
print(jiecheng(5))
源代碼(注意源代碼的縮進(jìn))
def recursion(n):
if n==1:
return 1
else:
return n*recursion(n-1)
list=[]
#定義一個(gè)空的列表,將調(diào)用遞歸函數(shù)生成的階乘值追加到列表
print("將1-10的階乘寫入列表,使用sum函數(shù)求和") #顯示效果明顯
for i in range(1,11):
list.append(recursion(i))# 將調(diào)用遞歸函數(shù)生成的階乘值追加到列表
print(sum(list)) #列表求和
sum_0=0
#顯示效果明顯,center(80,"*")標(biāo)題放置位置
print("for循環(huán)直接調(diào)用遞歸函數(shù)求和".center(80,"*"))
for i in range(1,11):
sum_0 +=recursion(i)
print(sum_0)
這是1-10的階乘求和,你可以參考下!
輸出的結(jié)果
def?fact(n):
if?n==0:
return?1
else:
return?n*fact(n-1)
n=int(input())
print(fact(n))