如何运行具有复杂参数的java递归程序?

时间:2017-11-01 11:39:53

标签: java recursion main

我正在编写一个程序,允许用户输入一个3位数的电话号码,当他们输入时,程序将返回组合在一起的3个字母的每个组合(根据每个数字包含的字母)。大多数电话号码都有字母。例如,如果用户键入6,2和3,则应返回以下内容:

MAD MBD MCD NAD NBD NCD OAD OBD OCD
MAE MBE MCE NAE NBE NCE OAE OBE OCE
MAF MBF MCF NAF NBF NCF OAF OBF OCF

我从互联网上复制并粘贴了一个代码(没有用户输入代码),现在我添加了一个主方法来运行程序。我不需要获取用户输入代码的帮助,但哪个方法和如何我调用该方法来运行程序(在main方法中)?

import java.util.List;
import java.util.LinkedList;
public class Solution 
{
    public List<String> letterCombinations(String digits) 
    {
        String[] letters = {"abc", "def", "ghi", "jkl", "mno", "pqrs", 
        "tuv", "wxyz"};
        List<String> rec = new LinkedList<>();
        StringBuilder string = new StringBuilder();
        letterCombinations(digits, 0, letters, string, rec);
        return rec;
    }

private void letterCombinations(String digits, int number, String[] letters, 
StringBuilder string, List<String> rec) 
{
    if (digits.length() == number) 
    {
        rec.add(string.toString());
        return;
    }
    String letter = letters[digits.charAt(number) - '2'];
    for (int i = 0; i < letter.length(); i++)
    {
        string.append(letter.charAt(i));
        letterCombinations(digits, number + 1, letters, string, rec);
        string.deleteCharAt(string.length() - 1);
    }


}

    public static void main(String[]args)
    {

    }
}  

2 个答案:

答案 0 :(得分:0)

这是我的main()代码:

public static void main(String[] args) {
        Solution o = new Solution();
        List<String> list1 = o.letterCombinations("623");
        System.out.println(list1);
    }

将此作为输出:

mad, mae, maf, mbd, mbe, mbf, mcd, mce, mcf, nad, nae, naf, nbd, nbe, nbf, ncd, nce, ncf, oad, oae, oaf, obd, obe, obf, ocd, oce, ocf

您可以根据需要格式化输出。

希望这会有所帮助:)

答案 1 :(得分:0)

您可以按照主要方法

中的代码运行程序
public static void main(String[]args)
{
    Solution t=new Solution ();
    List<String> list=t.letterCombinations("623");

    for(String listitem:list){
        System.out.println(listitem);
    }
}

List<String> rec = new LinkedList<>();替换为List<String> rec = new LinkedList<String>();

说明:: 1 GT;&GT;由于letterCombinations()是从letterCombinations()调用的,很明显我们必须先调用letterCombinations()。由于类只包含其中的两个方法,我们必须从main调用letterCombinations()来获得正确的功能。 2 - ;&GT; letterCombinations()不是静态方法,因此我们必须使用类Solution的对象并将所需参数传递给它来调用它。

试试这个,我希望这可以帮助你运行上面的程序