我正在使用c ++进行xnor门,我能够通过使用递归函数进行编码以找到答案,但是答案位是相反的顺序,因为我通过使用模数比较两个二进制输入最后一个数字的斩并且比较,如果输出相等,否则输出0,我的问题是如何将答案反转为正确的顺序。 int xnor(int x,int y){//应用xnor
的函数if (x > 0) {
int reminder1 = x % 10;
int reminder2 = y % 10;
if (reminder1 == reminder2) {
cout<<1;
}
else {
cout<<0;
}
return xnor(x / 10, y / 10);
}
}
假设我输入110001和101110 它将显示000001而不是100000
答案 0 :(得分:2)
修复你的功能很简单,只需在输出之前输入递归调用而不是之后。此外,您还缺少x > 0
的其他情况的return语句。但这不是正确的解决方案。适当的一种是正常编码数据,而不是卷积二进制十进制。是标准流缺少二进制数据的输入/输出,但您可以使用std::bitset
或将二进制字符串转换为int,反之亦然,这是微不足道的。那么你的函数也会变得微不足道,并且不需要任何递归,因为二进制操作对于大多数CPU都是原生的:
int xnor(int x, int y)
{
return ~(x^y);
}
答案 1 :(得分:0)
您可能希望添加第3个字符串参数(到目前为止的答案),并且在最后一次迭代中,您希望在cout之前反转该字符串。 你可以给第三个参数一个默认情况下为空xnor(int x,int y,string s =“”),这样你第一次调用它时就不必给它一个值。