Can I return in void function?

Solution 1:

Yes, you can return from a void function.

Interestingly, you can also return void from a void function. For example:

void foo()
{
  return void();
}

As expected, this is the same as a plain return;. It may seem esoteric, but the reason is for template consistency:

template<class T>
T default_value()
{
  return T();
}

Here, default_value returns a default-constructed object of type T, and because of the ability to return void, it works even when T = void.

Solution 2:

Sure. You just shouldn't be returning an actual value.

Solution 3:

Yes, you can use that code to return from the function. (I have to be very verbose here to make Stack Overflow not say that my answer is too short)

Solution 4:

Yes, that will return from the function to the previous level of recursion. This is going to be very basic explanation, but when you call a function you are creating a new call stack. In a recursive function you are simply adding to that call stack. By returning from a function, whether you return a value or not, you are moving the stack pointer back to the previous function on the stack. It's sort of like a stack of plates. You keep putting plates on it, but than returning moves the top plate.

You could also verify this by using a debugger. Just put a few break points in your code and step through it. You can verify yourself that it works.