private void DoPhoneCombi(byte[] arr, StringBuilder sb, int len, int level) { if (level == len) { Console.WriteLine(sb.ToString()); return; } byte x = arr[level]; int upCap = (x < 2) ? 1 : 3; for (byte i = 1; i <= upCap; i++) { sb.Append(PhoneNumberChars.GetChar(x, i)); DoPhoneCombi(arr, sb, len, level + 1); sb.Length -= 1; } }
private static void DoPhoneCombination(byte[] phoneNumber, StringBuilder sb, int level) { if (level == phoneNumber.Length) { Console.WriteLine(sb.ToString()); return; } byte X = phoneNumber[level]; int upCap = (X < 2) ? 1 : 3; for (byte i = 1; i <= upCap; i++) { sb.Append(PhoneNumberChars.GetChar(X, i)); DoPhoneCombination(phoneNumber, sb, level + 1); sb.Length -= 1; } }