Feel free to make this post as a duplicate if the question asked already, I haven't found a post same as this
As far as I know that there's no need to return
in a void
function, e.g:
void ex () {printf ("Hi\n");}
But, is it fine if there's no return
in a void
recursion? What I'm thinking is, the program will keep calling func (num-1)
until it reaches 0
and it returns so it doesn't print 0
to the output, and I need return
at the end of the function so after the recursion call is done, you go back to the previous func ()
immediate caller.
Here's the code,
#include <stdio.h>
void func (int num)
{
if (!num) return;
func (num-1);
printf ("%d\n", num);
return; //Is it necessary to put return here?
}
int main ()
{
func (10);
return 0;
}
Output,
1
2
3
4
5
6
7
8
9
10
Without the last return
, it works just fine too, or am I missing something?
A function with return type void
doesn't need an explicit return
. Simply reaching the end of the function will properly return.
It is no different for void functions that are also recursive. The first return
in your function is required because you want it to return before reaching the end of the function, but the second isn't required.
A function returning void doesn't have to explicitly return. A program has 1 entry point, but might have multiple exit points. Consider the following example:
void print(int var)
{
if (var)
return; // first exit point
/*
* do stuff
*/
// second exit point
}
It has 2 exit points. Second one is without a return;
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With