m0_48946273
玛冉丽
采纳率66.7%
2020-07-30 02:01

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

已采纳

#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,所以希望有其他方法,跪求解答!!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • CrazyIdeas CrazyIdeas 8月前

    应该 是 头文件的问题,你的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;
    }
    
    点赞 1 评论 复制链接分享
  • Gerald_Jones GeraldJones 8月前

    这是因为你调用的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;
    }
    
    点赞 1 评论 复制链接分享
  • qq_39554698 小学狗喵喵叫 8月前
    int main()
    {
    erjinzhi(123);
    return 0;
    }
    
    点赞 评论 复制链接分享