gpt4 book ai didi

java - 将迭代转换为递归

转载 作者:行者123 更新时间:2023-11-29 08:37:53 25 4
gpt4 key购买 nike

我正在借助教科书、YouTube 和在线找到的工作表自学 AP 计算机科学 A。其中一个工作表是关于递归的,要求我将下面的代码转换为递归,但是教科书和 YouTube 都无法解释如何从迭代转换为递归。

public static int iterative(int x){
int count=0;
int factor=2;
while(factor<x){
if(x%factor==0)
count++;
factor++;
}
return count;
}

下面的代码是我的尝试,但我不断收到 StackOverFlowError。

    public static int recursion(int x){
int count=0;
int factor=2;
if(factor>x)
return count;
else if(x%factor==0){
factor++;
count++;
}
return count + (recursion(x));
}

有人可以解释一下如何从迭代转换为递归吗?谢谢。

最佳答案

正如 JackVanier 已经针对这个特定问题所解释的那样,您必须将因子作为方法参数传入。但是公共(public)方法签名应该保持不变,因此您必须编写两个新方法:一个是可公开访问的,具有预期的签名,另一个是真正递归的,由另一个方法调用。

public static int recursive(int x) {
return recursive(x, 2);
}

private static int recursive(int x, int factor) {
if (factor >= x)
return 0;
if (x % factor == 0)
return 1 + recursive(x, factor + 1);
return recursive(x, factor + 1);
}

还值得一提的是,您需要一个中断递归的停止条件。这是你已经得到正确的东西,它是 factor >= x 条件,在任何情况下最终都类似于 true

关于java - 将迭代转换为递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42495744/

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