gpt4 book ai didi

java - Java 中的尾递归编程

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:03:49 27 4
gpt4 key购买 nike

<分区>

我已经使用 C/C++ 编写代码多年,最近才开始使用 Java。在我做过的一个项目中,我正在对一个大数据集进行尾递归(我很抱歉没有提供代码,因为我找不到它......)。我意识到一个明显的性能问题,而不是在 C/C++ 中。然后我阅读了一些关于为什么 JVM 不支持尾调用优化(还?)的文章,以及 Java 程序员通常(如果不是总是)使用循环代替尾递归调用。

因此,不管使用何种语言,尾递归编程在 Java 中是否在语义上是错误的,或者它通常只是一种不好的做法?

以下两个 Java 函数在性能方面和语义方面** nic 方面有什么区别吗?

非递归

int factorial(int n)
{
int result = 1;
for (int i=1; i<=n; i++)
result *= i;

return result;
}

递归

int factorial(int n)
{
if (n == 1)
return 1;

return factorial(n-1) * n;
}

此外,将递归版本更改为以下内容有什么不同吗?

int factorial(int n)
{
if (n == 1)
return 1;

//below is changed
int result = factorial(n-1) * n;
return result;
}

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