【发布时间】:2019-10-12 22:54:23
【问题描述】:
我不知道如何为 String 值分配一个数字并使其自动识别以使该数字成为 String 值。问题如下:
递归编写方法: 1) 考虑在小于 12 时仅返回数字本身的基本情况(除以 12 时商为 0,余数为数字)。如果数字是 10 或 11,则返回“A”或“B”。
2) 考虑数字大于或等于 12 的递归情况。在这种情况下,首先使用商递归调用方法并将结果(使用 + 运算符连接字符串)与另一个结果连接使用余数递归调用。返回两个递归调用的连接结果。
一个例子; 20A 将是:
2 x 12^2 + 0 x 12^1 + 10 x 12^0 = 2 x 144 + 0 x 12 + 10 x 1 = 288 + 0 + 10 = 298
我现在知道代码完全错误
public class Duodecimal {
public static String toBase12(int n) {
//TODO: complete this method
if (n==10)
return "A";
if (n==11)
return "B";
if (n<12)
return n;
else {
if (n%12==10)
return (n/12 + "A");
if (n%12==11)
return (n/12 + "B");
else
return n/12;
}
}
}
【问题讨论】:
-
"return "A" or "B" if the number is 10 or 11" 这意味着A=10和B=11,那么为什么
20A使用1 x 12^0,什么时候应该是10 x 12^0? -
次要但 20A 将是 2x12^2 +0x12^1 + 10x12^0 = 2x144 + 0x12 + 10x1 = 288 + 0 + 10 = 298
-
我建议尝试这样的方法 - 获取输入 N 并计算 N/12 和 N%12。然后添加 N%12 的字符串值并在 N/12 的值上递归(尾递归)。
-
"考虑大于等于12的数的递归情况。这种情况下先递归调用方法使用商"我在
else块中没有看到这样做的尝试。 -
错字修正谢谢!