电话号码对应英语单词
问题描述
分析与解法
详细代码如下:
1 package chapter3jiegouzhifa.TelephoneMapWords; 2 /** 3 * 电话号码对应英语单词 4 * @author DELL 5 * 6 */ 7 public class TelephoneMapWords1 { 8 private int telLength; //电话号码的位数 9 private char c[][]={ //各个数字所能代表的字符10 "".toCharArray(), //011 "".toCharArray(), //112 "ABC".toCharArray(), //213 "DEF".toCharArray(), //314 "GHI".toCharArray(), //415 "JKL".toCharArray(), //516 "MNO".toCharArray(), //617 "PQRS".toCharArray(), //718 "TUV".toCharArray(), //819 "WXYZ".toCharArray(), //9 20 };21 private int total[]={0,0,3,3,3,3,3,4,3,4}; //每个数字所能代表的字符数22 private int number[]; //电话号码23 private int answer[]; //数字目前所代表的字符在其所能代表的字符集中的位置24 //构造函数25 public TelephoneMapWords1(int number[]){26 this.number = number;27 this.telLength = number.length;28 answer = new int[telLength];29 }30 //输出电话号码对应英语单词31 public void output(){32 while(true){33 for(int i=0;i=0){38 if(answer[k]
【问题1的解法二】递归方法
其实可以从循环算法中的n个for循环方法中得到提示,每层for循环,其实可以看成一个递归函数的调用。具体代码如下:
1 package chapter3jiegouzhifa.TelephoneMapWords; 2 /** 3 * 电话号码对应英语单词 4 * 【解法二】递归方法 5 * @author DELL 6 * 7 */ 8 public class TelephoneMapWords2 { 9 private int telLength; //电话号码的位数10 private char c[][]={ //各个数字所能代表的字符11 "".toCharArray(), //012 "".toCharArray(), //113 "ABC".toCharArray(), //214 "DEF".toCharArray(), //315 "GHI".toCharArray(), //416 "JKL".toCharArray(), //517 "MNO".toCharArray(), //618 "PQRS".toCharArray(), //719 "TUV".toCharArray(), //820 "WXYZ".toCharArray(), //9 21 };22 private int total[]={0,0,3,3,3,3,3,4,3,4}; //每个数字所能代表的字符数23 private int number[]; //电话号码24 private int answer[]; //数字目前所代表的字符在其所能代表的字符集中的位置25 //构造函数26 public TelephoneMapWords2(int number[]){27 this.number = number;28 this.telLength = number.length;29 answer = new int[telLength];30 }31 //输出电话号码对应英语单词32 public void output(int index){33 if(index==telLength){34 for(int i=0;i