0
我想我主要是为了解决家庭作业问题。递归地添加两个二进制数字,无位运算; Java家庭作业
这是一个201 CS类。现在我只想要正确的逻辑。目前,它没有按照预期运作,但它很接近。
我们不想使用.toBinary,按位或其他任何东西。我们也没有教过stringBuilder,所以我想避免使用它。
有一个System.out.println();在从底部到顶部阅读控制台的方法中提供正确的答案。
public static void main(String[] args) {
System.out.println(addBin(1100111011,1101110011));
}
public static String addBin(int num1,int num2){
String result = "";
if(num1 > 0 || num2 > 0){
int part1 = num1%10, part2 = num2%10;
int rem1 = num1/10, rem2 = num2/10;
result += Integer.toString((part1 + part2)%2);
//System.out.println(result);
int carry = (part1 + part2) /2;
addBin(rem1 + carry, rem2);
return result;
}
return result;
}
所以,这个示例添加1100111011和1101110011与输出
0
1
1
1
0
1
0
1
0
1
1
0
时,正确的答案是11010101110.
我无法理解如何正确地“啪”的“结果“部分正确。你能否帮我理解这个过程,可能是在这个问题的背景下?
谢谢!
你想'System.out.println(addBin(0b1100111011,0b1101110011));'? –
我不知道。这些是直接来自用户输入的“二进制”数字。就像,我应该能够从某个地方在扫描仪中获取这些数字。 –
'addBin'返回一个值;你应该使用该返回值。这可能有助于不创建'result'变量,而只需考虑两个值'addBin(rem1 + carry,rem2)'和'Integer.toString((part1 + part2)%2)'。 – Ryan