如何在函数递归中追加向量并返回向量?

时间:2016-09-23 11:31:52

标签: c++ vector

这是我的函数将十进制数字更改为二进制数字,似乎最后一句话有一些问题。我知道我可以创建一个静态向量来解决问题,但我不想这样做。我如何附加一个向量作为递归函数的返回对象?

vector<int> tenchangetwo(int num)
{
    int i = num/2;
    int j = num%2;
    if(i==0)return vector<int>{j};
    else return tenchangetwo(i).push_back(j);
}
  

第6行:无法转换&lt; tenchangetwo(int)()。std :: vector&lt; _Tp,_Alloc&gt; :: push_back&gt;(j)&#39;来自&#39; void&#39;到&#39; std :: vector&#39;

1 个答案:

答案 0 :(得分:3)

最好的方法是首先声明最后要返回的变量。

vector<int> tenchangetwo(int num)
{
    vector<int> v;
    int i = num/2;
    int j = num%2;

    if(i > 0) v = tenchangetwo(i);

    v.push_back(j);
    return v;
}

这使您的功能更清洁,更有效。