2016-07-16 4 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

Смежные вопросы