22得票5回答
为什么在Haskell中计算阶乘比在Java中快得多

我遇到的编程问题之一涉及到计算大数(最多10^5位数)的阶乘。我见过一个简单的Haskell代码,如下所示:factorial :: (Eq x, Num x) => x -> x factorial 0 = 1 factorial a = a * factorial (a - 1...

21得票3回答
递归计算阶乘的函数导致堆栈溢出。

我在Rust中尝试了一个递归的阶乘算法。我使用的是这个版本的编译器: rustc 1.12.0 (3191fbae9 2016-09-23) cargo 0.13.0-nightly (109cb7c 2016-08-19) 代码: extern crate num_bigint; e...

18得票22回答
17得票2回答
不使用模板特化的模板阶乘函数

我不理解以下行为。 下面的代码旨在在编译时计算阶乘,但它甚至不能编译:#include <iostream> using namespace std; template<int N> int f() { if (N == 1) return 1; // we exi...

16得票10回答
使用Java整数计算100的阶乘(100!)时,结果为0。

当进行以下操作时:int x = 100; int result = 1; for (int i = 1; i < (x + 1); i++) { result = (result * i); } System.out.println(result); 显然是因为结果太大了,超过...

16得票6回答
计算BigInteger的阶乘时出现StackOverflowError错误?

我正在尝试编写一个Java程序来计算一个大数的阶乘。看起来BigInteger无法保存这样一个大数。 以下是我编写的(直接)代码。 public static BigInteger getFactorial(BigInteger num) { if (num.intValue()...

16得票4回答
Prolog中可逆数值计算

在阅读SICP时,我遇到了逻辑编程第4.4章。然后我开始研究Prolog编程语言,并尝试理解其中一些简单的赋值操作。我发现Prolog似乎在数值计算方面有些问题。 这里是在标准Prolog中计算阶乘的方法:f(0, 1). f(A, B) :- A > 0, C is A-1, f(C...

15得票16回答
使用for循环计算阶乘

目前我有这段代码,它的作用是计算阶乘。int numberInt = int.Parse(factorialNumberTextBox.Text); for (int i = 1; i < numberInt; i++) { numberInt = numberInt * i; }...

15得票9回答
在C++中计算大的阶乘

我知道这是一个经典的编程问题,因此我想明确我不是要求代码解决方案,但希望得到正确方向的指引。我正在学习C++,作为学习过程的一部分,我尝试解决一些编程问题。我试图编写一个程序来处理高达10亿阶乘的数字。显然,这些数字将会非常巨大,使用常规算术运算处理将会非常困难。如果能够指导我解决这类问题的方...

14得票4回答
如何优化这个在Scala中计算阶乘的函数?(创建50000个BigInts)

我已经比较了Scala的版本。(BigInt(1) to BigInt(50000)).reduce(_ * _) 转换到Python版本reduce(lambda x,y: x*y, range(1,50000)) 实际上,结果显示Scala版本的执行时间比Python版本长了约10倍。 ...