gpt4 book ai didi

java - java中的递归,哪一个最好?

转载 作者:行者123 更新时间:2023-12-01 21:26:42 26 4
gpt4 key购买 nike

public class a1 {

private static int unit = 0;

private static int sum = 0;

public static void main(String[] foo) {
unit = 10;
System.out.println(tailRecur(unit));

System.out.println(tailRecur2(10));
}

public static int tailRecur(int result) {
int sum = result + unit - 1;
unit = unit - 1;
if (unit == 0) {
return sum;
}
return tailRecur(sum);
}

public static int tailRecur2(int unit) {
if (unit == 0) return sum;
sum = sum + unit;
return tailRecur2(unit - 1);
}
}

我写了一个简单的方法来达到1+...+10。我不确定哪一种更好地理解递归语法的含义。大家都给了我正确的答案。

最佳答案

存储静态变量是不必要的,因此这两种解决方案都不理想。

尝试这样思考

  1. 你想做什么?答:1+...+N

  2. 输入什么?答:N ,求和的最高数字。

  3. 您可以在每个步骤中递归执行哪些操作来帮助您通过该输入得出答案?答案:取出该数字并将其添加到所有 N - 1 的结果中解决方案。

  4. 什么时候应该停止递归并开始累积求和结果(您的基本情况是什么)?答案:当数字达到1(通常是可能的最小输入),甚至小于1,以防止负数输入导致StackOverflow错误。

public static int sumUpTo(int x) {
if (x <= 1) return x;
return x + sumUpTo(x - 1);
}

关于java - java中的递归,哪一个最好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38066546/

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