Вы могли бы написать это так, но ... я бы этого не сделал. Это запутанный код и не дает вам никаких преимуществ. Если вы этого хотите, потому что ваш истинный вариант использования имеет большое количество вложенных циклов, подумайте, что просто не делайте этого; это серьезный запах дизайна.
void nested_loop(const int levels, const int comparator, const int level = 0, const int accumulator = 0)
{
if (level < levels) {
for (int i = 0; i < 6; i++) {
nested_loop(levels, comparator, level + 1, accumulator + i);
}
}
else {
if (accumulator == comparator) { // your if (z+y+x==f)
//do something
}
}
}
int main() {
const int levels = 3;
const int f = 42;
nested_loop(levels, f);
}