Вы очень расплывчаты в том, почему вы этого хотите. Для стартера возможным решением является замена каждого цикла на рекурсивную функцию.
void recursiveX(int zVal, int yVal, int xVal)
{
if(zVal+yVal+xVal == f)...
if(xVal != 0)
recursiveX(zVal, yVal, xVal -1);
}
void recursiveY(int zVal, int yVal)
{
recursiveX(zVal, yVal, 6);
if(yVal != 0)
recursiveY(zVal, yVal-1);
}
void recursiveZ(int val)
{
recursiveY(val, 6);
if(val != 0)
recursiveZ(val-1);
}
...
recursiveZ(6);
И в итоге вы можете объединить все это в одну функцию. Тем не менее использование рекурсии просто потому, что это возможно, никогда не является хорошей идеей.