函数递归求一个数的二进制数报错

#include
#include
using namespace std;
void erjinzhi(int n)
{
if ((n / 2) != 0) {
erjinzhi(n / 2);
cout << n % 2;
}
else
cout << n;

}
int main()
{
cout<<erjinzhi(123);
return 0;
}
求问各位大神,为什么我这段程序不能用,报错原因是“没有与这些操作数匹配的<<运算符”,我应该怎么修改呢?我试图把上面void类型换成int,但是输出结果最后会多出一个0,所以希望有其他方法,跪求解答!!!

应该 是 头文件的问题,你的erjinzhi 函数 也没有 返回值

#include &lt; cstdlib &gt;
#include &lt; iostream &gt;
using namespace std;
void erjinzhi(int n)
{
if ((n / 2) != 0) {
erjinzhi(n / 2);
cout << (n % 2);
}
else
cout << n;

}
int main()
{
erjinzhi(123);
return 0;
}
int main()
{
erjinzhi(123);
return 0;
}

这是因为你调用的erjinzhi()函数体返回类型是void 空类型,void没有返回值,因此在调用cout << 输出运算符的时候回出现问题这里可以使用递归的话,可以直接调用void类型的函数体即可。

#include<iostream>
using namespace std;

void erjinzhi(int n)
{
    if ((n / 2) != 0) {
        erjinzhi(n / 2);
        cout << n % 2;
    }
    else
        cout << n;
}
int main()
{
    erjinzhi(123);
    return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^