def factorial(number):
if number == 0 or number ==1:
return 1
else:
return number * factorial(number-1)
以上是递归实现
看看for循环实现
def fib(n):
if n == 1 or n == 0:
return 1
else:
total = 1
for i in range(2, n+1):
total = i * total
return total
以下使用reduce函数实现
from functools import reduce
def multiply(a, b):
return a * b
mul = lambda a, b: a * b
fib = lambda n : reduce(multiply, [x for x in range(1, n+1)])
if __name__ == '__main__':
print(reduce(multiply, [1,2,3]))
print(fib(5))
#reduce函数,接收两个参数,一个是函数f(接收2个参数),另一个是可迭代对象,把可迭代对象前两个值传入函数f,函数f返回一个值后,这个返回值作为参数,和可迭代对象第3个值,传入函数f,以此类推