c'est ça ; simplement un appel récursif !
(étape 2 : pourquoi en serait-il autrement ? en quoi ce que vous avez écrit serait-il fondamentalement différent de (fonction comme au 1er semestre) :
void f(vector<double> tab) {
for (auto x : tab) {
f({x});
}
}
for (auto x : tab) {
f({x});
}
}