2016-07-16 12 views
-1

Also habe ich mit dem Quadrieren von Vektorelementen rekursiv gekämpft ... Also, wenn ich einen Vektor sample = {2,3,4} habe, muss die Funktion einen Vektor mit 4,9 zurückgeben , 16. Irgendein Rat?Vektorelemente rekursiv quadrieren

+1

Warum rekursiv? Es ist trivial, nicht rekursiv zu arbeiten. Ist Rekursion eine harte Anforderung? – nwp

+0

Ja, es muss rekursiv gemacht werden – mariskaM

Antwort

0

Dieses Beispiel sieht aus wie rekursiv:

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

Ausgang:

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

Es hat funktioniert !!! Ich danke dir sehr – mariskaM