gpt4 book ai didi

java - 以字符串形式返回分形序列 (1 12 123 1234 ...) 的方法,但最后一个序列打印两次。 ( java )

转载 作者:行者123 更新时间:2023-12-02 05:45:14 25 4
gpt4 key购买 nike

这个程序的要点是返回一个“分形序列”,直到某个数字 n。这听起来很奇特,但它的意思是,如果 n = 4,那么它将返回:1 1 2 1 2 3 1 2 3 4。(它只计数到 1,然后是 2,然后是 3,然后是 4 ,并在到达时返回每个步骤。)为了更容易查看:1 12 123 1234。

  1. 该方法称为“foo”,主方法必须打印它。因此,main 方法通过 System.out.print(foo(4)) 来调用它。

  2. foo 方法必须返回一个字符串。

  3. 循环可能出现在 foo 方法中,但练习的重点是递归地解决问题,因此大部分工作应该以递归为特色。否则,使用一些 for 循环会容易得多!

    public class test{
    public static void main(String args[]){

    System.out.print(foo(4));

    }
    public static String foo(int n){

    String s = "";


    if(n == 1){ //Base step of the recursion
    s = 1 + " ";
    }
    else{
    s = foo(n-1) + n + " "; //Recursive step of the recursion
    }
    System.out.print(s);
    return s;

    }
    }

现在,程序将打印 1 1 2 1 2 3 1 2 3 4 1 2 3 4

问题在于它在末尾打印出一组额外的 1 2 3 4。我意识到这样做的原因是因为 System.out.print(s) 打印出我需要的所有内容,但是主方法中额外的 System.out.print(foo(4)) 打印出额外的 1 2 3 4 最后。

如果在 main 方法中,我只取出 System.out.print,然后编写 foo(4);,那么这个问题很容易解决。但是,就像规则 (1) 所说的那样,main 方法必须有打印。我不允许编辑 foo 方法之外的任何内容。

我已经尝试了很多不同的事情(现在大约 7 个小时左右),但我似乎并没有“明白”。有人可以阐明我哪里出错了吗?

真诚地感谢您!

最佳答案

我首先想到了一个迭代解决方案。

//Iterative Solution
public static String bar(final int n){
final StringBuilder builder = new StringBuilder();
for (int i = 1; i <= n ; i++) {
for (int j = 1; j <= i ; j++) {
builder.append(j);
}
builder.append(" ");
}
return builder.toString();
}

事实上,这依赖于 2 个嵌套循环,这表明我不可能仅使用单个方法而不使用循环来生成递归解决方案。因此,我必须包含一个循环来构建递归中的各个部分。

//Recursive Solution (with some iteration too)
public static String foo(final int n) {
if( n == 1 ) {
return 1 + " ";
}

String s = "";
for (int i = 1; i <= n; i++) {
s += i;
}

return foo(n-1) + s + " ";
}

当用 4 调用时,这两个都会产生相同的输出,所以我的主要方法:

public static void main(final String args[]){
System.out.println(bar(4));
System.out.println(foo(4));
}

产生此输出:

1 12 123 1234

1 12 123 1234

关于java - 以字符串形式返回分形序列 (1 12 123 1234 ...) 的方法,但最后一个序列打印两次。 ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24135195/

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