我认为我主要是为家庭作业问题找到解决方案。
这适用于201 CS课程。现在我只想让逻辑正确。目前,它并没有按预期运作,但它已经接近了。
我们不想使用.toBinary,bitwise或其他任何东西。我们还没有被教过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和11011100110
1
1
1
0
1
0
1
0
1
1
0
当正确答案是11010101110时。
我无法理解如何正确使用" pop" "结果"适当的部分。能否帮助我理解这个过程,可能是在这个问题的背景下?
谢谢!
答案 0 :(得分:0)
从输出中可以看出,您以相反的顺序获得了正确的结果,但是您没有将任何旧的结果附加到当前计算的结果中。
在if条件中,您正在调用addBin()函数,但您没有使用它在任何地方提供的结果。只需将该行更改为以下内容:
result = addBin(rem1 + carry, rem2)+result;
这应该有效地将所有结果附加到当前答案前面,这样您就不会向后退方向。希望这会有所帮助。