问题标签 [factorial]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3135 浏览

c++ - 谁能解释这个计算大阶乘的算法?

我遇到了以下计算大阶乘的程序(数字大到 100).. 谁能解释一下这个算法中使用的基本思想?我只需要知道在计算阶乘中实现的数学。

0 投票
0 回答
250 浏览

factorial - 我正在尝试用 xml 语言实现阶乘

我正在尝试用xcerion的 xml 语言实现阶乘。

我的代码有效,但我认为它有点罗嗦。

这种语言与其他 xml 语言相比如何?

尤其是处理变量、选择、循环和子程序调用。

0 投票
5 回答
1622 浏览

c++ - N 的 C++ 算法!订货

我有一个包含 N 个项目的列表,我想知道如何遍历列表以获取每个组合。没有双打,所以我需要得到所有的N!订货。额外的内存没问题,我正在尝试最简单的算法,但我遇到了麻烦。

0 投票
4 回答
85985 浏览

complexity-theory - 递归阶乘程序的复杂性

递归程序找到一个数字的阶乘的复杂性是多少n?我的预感是它可能是O(n)

0 投票
19 回答
48247 浏览

algorithm - 如何找到阶乘?

如何编写程序来找到任何自然数的阶乘?

0 投票
20 回答
73419 浏览

ruby - Ruby 阶乘函数

我快疯了:阶乘的 Ruby 函数在哪里?不,我不需要教程实现,我只想要库中的函数。它不在数学中!

我开始怀疑,它是标准库函数吗?

0 投票
2 回答
1635 浏览

visual-studio-2008 - Prolog 和 C++ 中的阶乘

我想计算一个数字的阶乘。我的阶乘规则在 Prolog 文件中,我将它连接到 C++ 文件。有人可以告诉我将 C++ 连接到 Prolog 有什么问题吗?

我得到 Prolog 提示,这是最后一行的作用。但是我没有得到阶乘计算的结果,例如:

我错过了什么?

谢谢,

0 投票
8 回答
31631 浏览

java - 基本递归方法 - 阶乘

我正在练习递归,但我不明白为什么这种方法似乎不起作用。有任何想法吗?

谢谢

0 投票
4 回答
1862 浏览

prolog - Prolog 中的可逆数值计算

在阅读 SICP 时,我遇到了逻辑编程第 4.4 章。然后我开始研究 Prolog 编程语言并尝试理解 Prolog 中的一些简单任务。我发现 Prolog 似乎在数值计算方面有问题。

这是标准 Prolog 中阶乘的计算:

我发现的问题是我需要引入两个辅助变量 (CD)、一个新语法 ( is) 并且问题是不可逆的(即f(5,X)按预期工作,但是f(X,120)没有)。

天真地,我希望至少C is A-1, f(C, D)上面可以替换为f(A-1,D),但即使这样也行不通。

我的问题是:为什么我需要在数值计算中而不是在其他查询中做这些额外的“东西”?

我确实理解(SICP 对此非常清楚)一般而言,关于“做什么”的信息不足以回答“如何做”的问题。因此,(至少一些)数学问题中的陈述性知识不足以实际解决这些问题。但这引出了下一个问题:Prolog 中的这些额外“东西”如何帮助我将公式限制在“做什么”足以回答“如何做”的那些问题上?

0 投票
4 回答
596 浏览

language-agnostic - 是否有一些数学“最佳”基础可以加快阶乘计算?

是否有一些数学“最佳”基础可以加快阶乘计算?

背景:只是为了好玩,我正在实现我自己的 bignum 库。(-:这是我的第一个错误吗?:-)。我正在试验内部表示和回归测试中使用的各种基础,方法是打印出 n 阶乘(n!)的精确值(十进制)。

我的 bignum 库表示整数并进行乘法的方式,时间与内部表示 n! 中“1”位的总数成正比。在我的内部表示中使用基数 2、4、8、16、2^8、2^30 等,对于任何特定数字,我都会给出完全相同的“1”位总数。

除非我犯了一些错误,否则以 18 为基数表示的任何给定阶乘(n!)的“1”位少于以 10 为基数或以 16 为基数或以 19 为基数表示的相同值。因此(原则上)使用基数18 将使我的 bignum 库比使用基数 10 或一些二进制 2^w 基数或基数 19 运行得更快。我认为这与 n! 以 18 为基数打印时比以 10 为基数或以 16 为基数或以 19 为基数打印时,要么更短,要么有更多的“尾随零”或两者兼有。还有其他一些比以 18 为基数更好的基础吗?换句话说,是否有一个表示 n 的基数!“1”位比基数 18 还要少?

这不是“什么是 bignum 库和素数测试算法的方便基础?”的重复。因为我怀疑“处理已知为大因子的整数的最佳基数,有很多 2 和 3 的因子”不同于“处理没有任何小因子且可能的整数的最佳基数”主要”。(-:加速阶乘计算——也许以牺牲其他类型的计算为代价——我的第二个错误?:-)

编辑:例如:

(我或多或少地将数字存储在右侧,没有逗号,加上一些元数据开销)。(虽然有人可能会认为“随着基数的增加,您将使用更少的“1”位来表示给定的数字”,或者“随着基数的增加,您将使用更少的非零数字来表示给定的数字”,以上示例表明这并不总是正确的。)

我将每个数字存储为一个小整数(“int”或“long int”或“byte”)。有没有其他合理的方式来存储数字?我很确定我的计算机以二进制形式存储这些整数——每个“1”、“2”、“4”、“8”和“G”数字使用一个“1”位;每个“3”、“5”、“6”、“9”和“A”数字使用两个“1”位;每个“7”和“B”位使用三个“1”位;每个“F”位使用四个“1”位,依此类推。

该值的十进制和十八进制表示(16!)都需要 14 个“1”位。所以我在之前的计算中犯了一个错误:对于每一个n,代表n!以八进制表示的“1”位并不总是比以十进制表示相同的值少。但是问题仍然存在:是否还有其他一些“最佳”基数需要最少的 1 位来存储大阶乘?

有人问:“你如何存储这些数字?” 好吧,这正是我的问题——存储 n 形式的数字的最佳方式是什么!? 我可以在内部使用以 10 为基数的数字,或以 2 的幂为基数,或以 18 为基数,或以其他一些为基数。哪个最好?我可以在内部将这些整数存储为一维数字数组,但长度需要很长才能存储所有数字。有什么合理的方法可以打印出100!十进制没有这样的数组?