微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我们如何在没有递归的情况下使用 python lambda 函数计算一个数字的阶乘

如何解决我们如何在没有递归的情况下使用 python lambda 函数计算一个数字的阶乘

我想使用 python lambda 函数计算一个数字的阶乘,无需递归。

我没有使用 lamda 函数

def factorial_number(num):
fact = 1
while(num>=1):
    fact = num* fact;
    num = num-1
return  fact


factorial_number(5)

我在没有递归的情况下尝试了以下代码(使用 lambda)。

factorial_number  = lambda num : 1 while(num>=1) fact = fact*num num = num-1 return fact

上面的代码不起作用。

错误

File "<ipython-input-1-62f7b66fbfd2>",line 1
factorial_number  = lambda num : 1 while(num>=1) fact = fact*num num = num-1 return fact
                                   ^

语法错误:无效语法

但我想使用 lamda 函数来实现,没有内置函数和递归方法。以便我可以了解更多如何有效地使用 Lamba 函数

请帮我写代码

解决方法

def factorial(n):
    t = 1
    for i in range(n,1,-1):
        t *= i
    return t

>>> factorial(4)
24
,

您可以使用functools.reduce()

from functools import reduce
num = int(input('Enter number: '))
fact = lambda num: reduce(lambda x,y: x * y,range(1,num+1))

print(f'{num}! = {fact(num)}')
,

您可以简单地使用 math.factorial。

import math
fctrl = lambda: math.factorial(x)

from math import factorial
fctrl = lambda: factorial(x)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。