重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
python不鼓励递归,请看这个函数的递归版(def sn_recursion)和非递归版(def sn)的代码对比:
成都创新互联专注于察雅网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供察雅营销型网站建设,察雅网站制作、察雅网页设计、察雅网站官网定制、小程序定制开发服务,打造察雅网络公司原创品牌,更为您提供察雅网站排名全网营销落地服务。
以下提供两种方法 供参考,第一种方式为自己构造求阶乘的函数,第二种则直接使用了Python标准库,代码如下:
一、
自己构造阶乘函数
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标准库
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)
递归调用函数jiezheng算阶乘
jiezheng(5)
返回120
按照题目要求编写的Python的阶乘递归程序如下
def jiecheng(n):
if n==1:
return 1
else:
return n*jiecheng(n-1)
print(jiecheng(5))
源代码(注意源代码的缩进)
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的阶乘求和,你可以参考下!
输出的结果
def fact(n):
if n==0:
return 1
else:
return n*fact(n-1)
n=int(input())
print(fact(n))