gpt4 book ai didi

java - 在 Java 中创建递归

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:24:15 25 4
gpt4 key购买 nike

起初这似乎很容易,但我越是尝试这样做,我越是陷入困境。

我希望创建一个递归方法,它将采用如下所示的带点的字符串和输出组合:

输入:测试

输出:

test
t.est
te.st
tes.t
t.es.t
te.s.t
t.e.s.t
t.e.st

你明白了……我需要字符之间所有点的排列。但是两个点不应该一起出现,点不应该是第一个或最后一个字符。

我写的代码是:

public final class Main{
public static void main(String[] args) throws Exception{
recurse ("test");
}

public static void recurse(String str){
recurse("",str);
}

public static void recurse (String pre, String str){
if(str.length() > 1){
recurse(pre+str.substring(0,1)+".",str.substring(1));
}
System.out.println(pre+str);
}
}

但是,我无法理解它。我应该做什么改变?

为了澄清起见,我从 https://medium.com/@JakeCooper/so-nice-i-did-it-twice-hacking-the-oneplus-reservation-system-again-2e8226c45f9a 得到了这个想法。 ,但我无意破解邀请系统。

最佳答案

尝试

public static void recurse(String prev, String next) {
if (next.length() == 0)
System.out.println(prev);
else {
recurse(prev + next.charAt(0), next.substring(1));
recurse(prev + "." + next.charAt(0), next.substring(1));
}
}

如果您也允许 . 位于整个字符串之前,请使用:

String s = "test";
recurse("",s);

如果您不允许 . 在前面:

recurse(s.charAt(0), s.substring(1));

如果您允许附加 .(即 test.t.e.s.t.),请将 if block 更改为

if (next.length() == 0) {
System.out.println(prev);
System.out.println(prev + ".");
}

关于java - 在 Java 中创建递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31855106/

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