gpt4 book ai didi

java - 文本预测文本的递归编程

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

我想编写一个程序,它接受一组数字,例如 234,并且目前打印出手机键盘上可能出现的所有字母组合。

(1 - 无,2 - abc,3- def 等)

我目前有:

import java.util.*;

public class testCombo {
static String str="217";
static ArrayList<String> list=new ArrayList<String>();

static void addLet(String seg){
if(seg.length()==str.length()){
list.add(seg);
return;
}
char currentChar=str.charAt(seg.length());
if(currentChar==1 || currentChar==0)
{
String str1=seg+" ";
addLet(str1);
}
if(currentChar=='2'){
addLet(seg+"a");
addLet(seg+"b");
addLet(seg+"c");
}
else if(currentChar=='3'){
addLet(seg+"d");
addLet(seg+"e");
addLet(seg+"f");
}
else if(currentChar=='4'){
addLet(seg+"g");
addLet(seg+"h");
addLet(seg+"i");
}
else if(currentChar=='5'){
addLet(seg+"j");
addLet(seg+"k");
addLet(seg+"l");
}
else if(currentChar=='6'){
addLet(seg+"m");
addLet(seg+"n");
addLet(seg+"o");
}
else if(currentChar=='7'){
addLet(seg+"p");
addLet(seg+"q");
addLet(seg+"r");
addLet(seg+"s");
}
else if(currentChar=='8'){
addLet(seg+"t");
addLet(seg+"u");
addLet(seg+"v");
}
else if(currentChar=='9'){
addLet(seg+"w");
addLet(seg+"x");
addLet(seg+"y");
addLet(seg+"z");
}
}

public static void main(String[] args){
addLet("");
for(String str:list) //Sets str to each value in list during each iteration
System.out.println(str);
}
}

作为我的代码,我们应该使用递归编程,但我无法让它适用于 1 和 0。 (这只是一个练习课,我还有另一个允许用户输入的类(class),它已经验证它只包含数字)

这种查找然后打印出每个组合的方式算递归吗?

最佳答案

是的,它是递归的(它通过调用自身来工作),但它不必要地冗长。您可以跳过临时变量,从而节省大量空间,并使其更具可读性。我花了一些时间才明白为什么每种情况下都有几个字符串变量:

    if(currentChar==1 || currentChar==0)
{
addLet(seg+" ");
}
if(currentChar=='2'){
addLet(seg+"a");
addLet(seg+"b");
addLet(seg+"c");
} ...

WRT 1 和 0,您应该将 currentChar 与 '1''0' 进行比较,而不是 10

关于java - 文本预测文本的递归编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3650519/

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