2016-07-16 16 views
-1

だから私は、再帰的にベクトル要素の二乗にどのように苦労してきた...だから私は、ベクトルサンプル= {2,3,4}を持っている場合、この関数は4.9とベクトルを返す必要があります、16。何かアドバイス?二乗ベクトル要素を再帰的に

+1

?非再帰的に行うことは自明です。再帰は難しい要件ですか? – nwp

+0

はい、再帰的に行う必要があります – mariskaM

答えて

0

この例では、再帰的に次のようになります。

#include <vector> 
#include <iostream> 
#include <cstdlib> 

void recursiveSquare (std::vector <int> & data, const int index) 
{ 
    std::cout << "Function call for element: " << index << std::endl; 
    if (index != data.size() - 1) { 
     recursiveSquare (data, index + 1); 
    } 
    std::cout << "Modified element: " << index << std::endl; 
    data [index] *= data [index]; 
}; 

void print (const std::string & header, std::vector <int> & data) 
{ 
    std::cout << header; 
    for (const auto & a : data) { 
     std::cout << a << " "; 
    } 
    std::cout << std::endl; 
} 

int main (int /*argc*/, char ** /*argv*/) 
{ 
    std::vector <int> data {2, 3, 4}; 

    print ("Input: ", data); 
    recursiveSquare (data, 0); 
    print ("Output: ", data); 

    return EXIT_SUCCESS; 
} 

出力:なぜ再帰的

Input: 2 3 4 
Function call for element: 0 
Function call for element: 1 
Function call for element: 2 
Modified element: 2 
Modified element: 1 
Modified element: 0 
Output: 4 9 16 
+0

これは機能しました!どうもありがとうございます – mariskaM

関連する問題