gpt4 book ai didi

java - 使用递归方法获取因子

转载 作者:太空宇宙 更新时间:2023-11-04 12:26:49 25 4
gpt4 key购买 nike

输出是正确的,但它不时在因子末尾显示-1(无限循环)。我知道递归方法内的 while 循环有问题,但我不知道它是什么。得到最终答案后如何停止递归调用?我应该使用什么来代替 while 循环?

public static void main() {
int num;
System.out.print("\fInput:");
num = kb.nextInt();
int temp = 1;
factors(num, temp);
}

public static void factors(int num, int temp) {
int count = 2;

while (temp != num) {
if ((num % count) == 0) {
System.out.print(count + " * ");
factors(num / count, temp * count);
} else
count++;
}
}

最佳答案

首先,这里不需要递归。如果您使用递归,即使您已经检查了更大的值,您也始终会从 count = 2 开始。

所以,而不是

factors(num/count, temp*count);

我只想使用

num = num/count;

其次,正如 Attila 已经说过的,您不需要 temp 参数,您真正需要的检查是 num != 1 是否为 true。

如果你确实想使用递归,会有更好的方法:将计数器传递给方法 factors ,这样你就不必总是从 2 开始。在这种情况下,你不需要任何循环:

public static void main()
{
int num;
System.out.print("\fInput:");
num=kb.nextInt();
int count=2;
factors(num, count);

}



public static void factors(int num, int count)
{
if (num == 1)
return;

if((num%count)==0)
{
System.out.print(count+ " * ");
factors(num/count, count);
}
else
factors(num,count+1);
}
}

关于java - 使用递归方法获取因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38294543/

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