gpt4 book ai didi

java - 阶乘法 - 递归还是迭代? ( java )

转载 作者:搜寻专家 更新时间:2023-11-01 01:17:58 25 4
gpt4 key购买 nike

我在完成 Euler 项目时遇到了一个组合问题。组合逻辑意味着计算阶乘。所以,我决定创建一个阶乘方法。然后我遇到了一个问题——因为我可以很容易地同时使用迭代和递归来做到这一点,我应该选择哪一个?我很快写了 2 个方法 - 迭代:

public static long factorial(int num) {
long result = 1;
if(num == 0) {
return 1;
}
else {
for(int i = 2; i <= num; i++) {
result *= i;
}
return result;
}

和递归:

public static long factorial(int num) {
if(num == 0) {
return 1;
}
else {
return num * factorial(num - 1);
}
}

如果我(显然)在这里谈论速度和功能,我应该使用哪一个?而且,总的来说,其中一种技术是否普遍优于另一种技术(因此,如果我以后遇到这种选择,我应该怎么做)?

最佳答案

两者都非常天真。没有认真的阶乘应用会使用其中任何一个。我认为对于大 n 来说两者都是低效的,当参数很大时,intlong 都不够用。

更好的方法是使用一个好的 gamma function实现和内存。

Here's Robert Sedgewick 的实现。

大值需要对数。

关于java - 阶乘法 - 递归还是迭代? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11171648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com