u***8 发帖数: 1581 | 1 103页。那个电话号码对应字母的题目。为什么for loop里面,要在最后判断是不是等
于0 或者是1?
getCharKey(int , int )不就是可以把一个数字对应的3个之一的字母给返回了么?那
么是0或者是1,就返回空的不就够了。为什么要判断下0 1,这个不懂。
updates: code在这里
static final int PHONE_NUMBER_LENGTH = 7;
void printTelephoneWords(int[] phoneNum) {
char[] result = new char [PHONE_NUMBER_LENGTH];
doPrintTelephoneWords( phoneNum, 0, result);
}
void doPrintTelephoneWords(int[] phoneNum, int curDigit, char[] result) {
if ( curDigit == PHONE_NUMBER_LENGTH) {
System.out.println(new String(result) );
return;
}
for ( int i = 1; i <= 3 ; i++) {
result[curDigit] = getCharKey(phoneNum[curDigit], i);
doPrintTelephoneWords(phoneNum, curDigit+1; result);
if (phoneNum[curDigit] == 0 || phoneNum[curDigit] == 1)
return ;///这里是什么意思?都curDigit+1,都递归调用了,为什么最
后还判断1 0 ?
}
} | R*****i 发帖数: 2126 | 2 不能省略,因为程序里每个digit都hardcode成三个循环了,1和0不需要三个循环,事
实上return换成break也可以。
举个极端例子,111-1111,如果有判断,最后只打印一个结果,如果没有判断,最后会
打印2187个结果。 | u***8 发帖数: 1581 | 3 明白了。
【在 R*****i 的大作中提到】 : 不能省略,因为程序里每个digit都hardcode成三个循环了,1和0不需要三个循环,事 : 实上return换成break也可以。 : 举个极端例子,111-1111,如果有判断,最后只打印一个结果,如果没有判断,最后会 : 打印2187个结果。
|
|