-1
だから私は、再帰的にベクトル要素の二乗にどのように苦労してきた...だから私は、ベクトルサンプル= {2,3,4}を持っている場合、この関数は4.9とベクトルを返す必要があります、16。何かアドバイス?二乗ベクトル要素を再帰的に
だから私は、再帰的にベクトル要素の二乗にどのように苦労してきた...だから私は、ベクトルサンプル= {2,3,4}を持っている場合、この関数は4.9とベクトルを返す必要があります、16。何かアドバイス?二乗ベクトル要素を再帰的に
この例では、再帰的に次のようになります。
#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
これは機能しました!どうもありがとうございます – mariskaM
?非再帰的に行うことは自明です。再帰は難しい要件ですか? – nwp
はい、再帰的に行う必要があります – mariskaM