我有这个问题,我必须将十进制数转换为二进制,然后将这些位存储在一个链表中,其中头节点是最高有效位,最后一个节点是最低有效位。解决问题本身实际上很容易,因为您只需要递归地继续取模 2 并将结果添加到列表中,直到十进制数变为 0。
我卡住的地方是我必须编写函数,使其返回最高有效位和最后一个有效位的一对数字(无论是数组还是列表)。即:在函数中输入 14 将返回 (1, 0),因为 14 是二进制的 1110。
我确实可以轻松访问 MSB 和 LSB(getFirst()、getLast())。
该函数只能接受一个参数,即十进制数。
目前我有这个当前代码:
public static void encodeBin(int n) {
if(n == 0) return; //Base case
else {
if(n % 2 == 0)
theList.addFirst(0);
else
theList.addFirst(1);
encodeBin(n / 2);
}
// return?
}
问题是我不知道如何返回 2 个值。有一个返回值意味着我不能自己调用 encodeBin() 。
此外,我应该在哪里创建列表?如果我把类似的东西放在List<Integer> = new LinkedList<Integer>()
函数的开头,那么每次函数调用自己时,它都会创建一个新列表并在那个新列表中添加位而不是原来的对吗?(从调用函数时创建的列表第一次)
有谁知道如何解决这个问题?