2016-09-23 4 views
-2

ここでは、10進数を2進数に変更する関数です。最後の文に問題があるようです。私は問題を解決するために静的なベクトルを作成することができますが、私はそれをこのようにしたくありません。再帰関数の戻りオブジェクトであるベクトルをどのように追加できますか?どのようにベクトルを返す関数再帰でベクトルを追加できますか?

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行目:変換できませんでした 'tenchangetwo(int)を()のstd ::ベクトル< _Tp、_Alloc> ::一back>(J)' '無効' から「STD ::ベクトルへ'

+6

ヒント: 'std :: vector :: push_back'の戻り値の型は何ですか?また、関数の戻り値の型は何ですか? – user463035818

+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; 
} 

これにより、機能がより洗練され、機能します。

関連する問題