factorial 相关问题

在数学中,由n!表示的非负整数n的阶乘是所有小于或等于n的正整数的乘积。

如何将变量/参数传递给big.NewInt()

以下代码片段无法在 N := big.NewInt(n) 上编译,并出现以下错误: 不能在参数中使用 n(int 类型的变量)作为 int64 值 大新整数 func 阶乘(n int)...

回答 1 投票 0

Golang:如何将变量/参数传递给big.NewInt()

我是 Go 新手,以下代码片段无法在 N := big.NewInt(n) 上编译,并出现以下错误: 不能在参数中使用 n(int 类型的变量)作为 int64 值 大新整数 夫...

回答 1 投票 0

使用原语运算符求 N 至 K 深度的阶乘

难以使用以下方法提出解决方案: 迭代/控制流和 积累。 不仅仅是一个解决方案,更希望得到带有提示和解释的答案。 def 下落(n, k):...

回答 4 投票 0

查找成员与活动重叠的所有实例

我有一个表,其中包含 memberID 和 10 个活动作为列,每个活动都有 1、0 标识该成员是否属于该活动的一部分。成员可以参与多个活动。 有没有 SQL 查询可以查找...

回答 1 投票 0

R 中的 c 函数错误

我正在尝试对 R 的 2*2 因素(“性别”、“阿凡达”,两个受试者间因素)进行阶乘方差分析测试,但它一直显示错误 形式参数“之间”与多个实际参数匹配

回答 1 投票 0

以数组为指数的 Numpy 幂

我有一个包含以下几行的Python代码: # 泊松模型 lambda_param = 3.0 x_model = numpy.linspace(0, 10, num=10) y_model = numpy.zeros(10) 索引 = 0 对于 x_model 中的 x: y_模型[...

回答 1 投票 0

3 函数加主函数 C 程序计算并显示阶乘

第一个函数需要获取数字并将其传递回主函数,然后需要将该值传递到第二个函数,该函数计算阶乘并将该值传递回主函数...

回答 2 投票 0

如何更优化这段对用户输入进行阶乘的代码?

a=1 for _ in range(int(input("输入:"))): a=a*(_+1);打印(一) 此代码执行阶乘并在过程进行时打印值。 输入 5 将打印: 1 2 6 24 120 这需要...

回答 2 投票 0

无法在Python中创建阶乘函数

我的代码 导入系统 数字=int(sys.argv[1]) 如果数字 == 0 事实=1 别的 事实=数字 对于 (x=1;x 我的代码 import sys number=int(sys.argv[1]) if number == 0 fact=1 else fact=number for (x=1; x<number; x++) fact*=x; // mistake probably here print fact 我收到错误 File "factorial.py", line 5 if number == 0 ^ SyntaxError: invalid syntax 如何在Python中创建阶乘函数? 您的错误所在的行应该显示为 if number == 0: 注意末尾的冒号。 此外,您需要在 else 和 for 之后添加相同的冒号。冒号的工作方式与其他语言中的 {} 类似。 最后,这不是 Python 中 for 循环的工作方式。您想要使用该列表的代码是 for x in range(1,number): 如果你把它放在 C 风格语言中,这将与你编写的内容具有相同的效果。 编辑:哎呀,我给出的 for 循环是错误的,它会包含 0。我更新了代码来纠正这个问题。 我知道您可能出于教育原因而尝试自己实现这一点。 但是,如果没有,我建议使用 math 模块内置阶乘函数(注意:需要 python 2.6 或更高版本): >>> import math >>> math.factorial(5) 120 这个模块是用 C 编写的,因此,它比用 python 编写要快得多。 (不过,如果您不计算大阶乘,那么无论如何它都不会太慢)。 这是您的代码,已修复并正在运行: import sys number = int(sys.argv[1]) fact = 1 for x in range(1, number+1): fact *= x print fact (阶乘零是一,对于任何不知道的人 - 我必须查一下。8-) if、else、for等后面需要冒号,并且for在Python中的工作方式与C不同。 Mark Rushakoff 的fact(n) 函数效率如此之高的原因是他错过了reduce() 函数。因此它实际上从未进行过计算。 更正了它的内容(我明白了): import operator, timeit, math # def fact1(n): return reduce(lambda x,y: x*y, range(1,n+1),1) def fact1x(n): return reduce(lambda x,y: x*y, xrange(1,n+1),1) def fact2(n): return reduce(operator.mul , range(1,n+1),1) def fact2x(n): return reduce(operator.mul , xrange(1,n+1),1) # def factorialtimer(): for myfunc in [ "fact1", "fact1x", "fact2", "fact2x" ]: mytimer = timeit.Timer(myfunc+"(1500)", "from __main__ import "+myfunc) print("{0:15} : {1:2.6f}".format(myfunc, mytimer.timeit(number=1000))) mytimer = timeit.Timer("factorial(1500)", "from math import factorial") print("{0:15} : {1:2.6f}".format("math.factorial", mytimer.timeit(number=1000))) 1500!、1000x 的结果输出: fact1 : 3.537624 fact1x : 4.448408 fact2 : 4.390820 fact2x : 4.333070 math.factorial : 4.091470 是的,我已经检查过它们都产生相同的值! 我不明白为什么 lambda xrange 比 lambda range 差这么多。嗯。 版本: PythonWin 2.6.2(r262:71605,2009 年 4 月 14 日,22:40:02)[MSC v.1500 32 位(英特尔)] 在 win32 上。 嗯......重新运行它时,我得到了更可信的东西 fact1 : 7.771696 fact1x : 7.799568 fact2 : 7.056820 fact2x : 7.247851 math.factorial : 6.875827 在 Python 2.6.5 上(r265:79063,2010 年 6 月 12 日,17:07:01)[GCC 4.3.4 20090804(发布)1] 在 cygwin 上: fact1 : 6.547000 fact1x : 6.411000 fact2 : 6.068000 fact2x : 6.246000 math.factorial : 6.276000 真的是在噪音中,不是吗? 这是一个你几乎想要的函数阶乘: >>> def fact(n): return reduce (lambda x,y: x*y, range(1,n+1)) ... >>> fact(5) 120 它不适用于fact(0),但你可以在fact范围之外担心:) Masi 询问函数式风格是否比 Richie 的实现更高效。根据我的快速基准测试(令我惊讶的是!),是的,我的速度更快。但我们可以做一些改变。 首先,我们可以按照另一条评论中的建议将 lambda x,y: x*y 替换为 operator.mul。 Python 的 lambda 运算符带来了不小的开销。其次,我们可以用 xrange 代替 range。 xrange 应该在线性空间中工作,根据需要返回数字,而 range 一次创建整个列表。 (然后请注意,对于过大的数字范围,您几乎肯定必须使用 xrange) 所以新的定义变成: >>> import operator >>> def fact2(n): return reduce(operator.mul, xrange(1,n+1)) ... >>> fact2(5) 120 令我惊讶的是,这实际上导致了性能下降。以下是 Q&D 基准: >>> def fact(n): return (lambda x,y: x*y, range(1,n+1)) ... >>> t1 = Timer("fact(500)", "from __main__ import fact") >>> print t1.timeit(number = 500) 0.00656795501709 >>> def fact2(n): return reduce(operator.mul, xrange(1,n+1)) ... >>> t2 = Timer("fact2(500)", "from __main__ import fact2") >>> print t2.timeit(number = 500) 0.35856294632 >>> def fact3(n): return reduce(operator.mul, range(1,n+1)) ... >>> t3 = Timer("fact3(500)", "from __main__ import fact3") >>> print t3.timeit(number = 500) 0.354646205902 >>> def fact4(n): return reduce(lambda x,y: x*y, xrange(1,n+1)) ... >>> t4 = Timer("fact4(500)", "from __main__ import fact4") >>> print t4.timeit(number = 500) 0.479015111923 >>> def fact5(n): ... x = 1 ... for i in range(1, n+1): ... x *= i ... return x ... >>> t5 = Timer("fact5(500)", "from __main__ import fact5") >>> print t5.timeit(number = 500) 0.388549804688 这是我的 Python 版本,以防有人想要交叉检查我的结果: Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) [GCC 4.3.3] on linux2 真的,最简单的选择是: def factorial(n): x = n for j in range(1, n): x = j*x return x 是的,不知何故,它有效。 你怎么想不到这一点?我不知道。 一个for循环和乘法器,真正简单是最好的方法,对吗? 编辑:哦,等等,我们正在以最高效的方式工作?哦哦...... 我的猜测,可能会有帮助 def recursive_fact(x :int)->int: if x == 0: yield 1 yield x * next(recursive_fact(x-1)) 和结果 print(list(recursive_fact(6)))

回答 7 投票 0

使用装饰器进行制表(动态规划)

使用装饰器通过列表查找数字的阶乘 定义阶乘(n): 如果 n<1: return 1 else: f=[0]*(n+1) #creation of the array/list# f[0]=1 ...

回答 1 投票 0

C中计算“N选K”时出现奇怪的计算错误

我正在编写一个程序,打印出帕斯卡三角形的行,它最多可以打印到第 14 行,其中的值为 13。我已将问题范围缩小到我所做的选择函数.. .

回答 1 投票 0

我的计算阶乘的宏在Excel中不起作用

请帮助我理解为什么我会得到#VALUE!在 VBA 中使用以下 UDF 在 Excel 中出错? 我查了这个 VBA 代码,它应该计算任何大小的数字的阶乘,包括......

回答 2 投票 0

在大多数情况下,递归函数使用的内存是 C 中迭代函数的两倍吗?

//递归实现: int 阶乘结果(int n) { 如果(n==0){ 返回1; } 别的 { 返回阶乘结果(n - 1) * n; } } // 迭代实现: 整数

回答 1 投票 0

重载逻辑 NOT 运算符以用作阶乘

我实现了一个带有重载 NOT 运算符的 Integer 类,如下所示: #ifndef INTEGER_H #定义INTEGET_H 模板 T阶乘(T t) { 如果(t==1) 返回 1...

回答 1 投票 0

获取连续因子,c#

我需要解决这个问题,但我一直在获取因素,但我需要做的是...... 正数 n 是连续因子的当且仅当它具有因子 i 和 j,其中 i > 1,j >...

回答 3 投票 0

如何检查R中的阶数因子变量

我在数据框中有因子变量。我希望其中一些是有序的(例如教育),而另一些是无序的(例如性)。 我创建了一些变量,并且创建了一些变量

回答 3 投票 0

为什么 log(n!) 是 O(nlog(n)) 而不是 O(log(n!))

我明白这里的数学 嗯! < n^n. But why can't O(log(n!)) simply be just O(log(n!))? Why is there a need, given f(n) ~ O(g(n)), f(n) != g(n) is a must ? I repeatedly see the pattern in tex...

回答 1 投票 0

使用生成器的 Python 阶乘程序

#功能 默认事实(x): 一个= 1 b = 1 如果 x == 0: 一个= 1 如果 x < 0: print('enter valid whole number!') if x > 0: 而 b < x: a = a * b ...

回答 7 投票 0

为什么return 1输出阶乘而return 0输出0?

我在这里使用Python。我查了一下 return 1 和 return 0 的区别,它说 0 表示 True,1 表示 False。 0 表示函数运行成功,1 表示有错误或

回答 1 投票 0

在Python中实现递归函数计算阶乘的问题

我正在尝试在Python中实现一个递归函数来计算阶乘,但是我在代码中遇到了一些问题。当我输入正整数时,该函数没有返回正确的

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.