原谅我,我是新手,但我想构建一个递归函数,它接受一个自然数,并返回从1到给定数字的所有自然数的乘积。因此,阶乘(5)应该返回120(5·4·3·2·1 = 120)。但是,我想我只是被卡住了。以下是我到目前为止的情况:
def factorial(x):
"""returns the product of all natural numbers from 1 up to the given number
natural number -> natural number"""
if x <= 0:
return 1
else:
return x*(x-1)
最佳途径是实施计数器吗?
答案 0 :(得分:1)
首先else
中的语句需要返回一个值,因为它是一个因子,它应该是x
乘以一个小于x
的因子。
return x * factorial(x - 1)
基本情况不能为零,首先是因为任何小于零的阶乘都是未定义的,任何数字乘以零都是零,这使得整个函数毫无意义。
您应该使用以下基本情况:
if x <= 1:
return 1
所以你的功能是:
def factorial(x):
if x <= 1:
return 1
else:
return x * factorial(x - 1)
答案 1 :(得分:0)
def factorial(x):
"""returns the product of all natural numbers from 1 up to the given number
natural number -> natural number"""
if x <= 0:
return 1
else:
return x*(factorial(x-1))
您还需要再次递归调用该函数。