C Programming - Functions - Discussion

Discussion Forum : Functions - Find Output of Program (Q.No. 4)
4.
What will be the output of the program?
#include<stdio.h>
int reverse(int);

int main()
{
    int no=5;
    reverse(no);
    return 0;
}
int reverse(int no)
{
    if(no == 0)
        return 0;
    else
        printf("%d,", no);
    reverse (no--);
}
Print 5, 4, 3, 2, 1
Print 1, 2, 3, 4, 5
Print 5, 4, 3, 2, 1, 0
Infinite loop
Answer: Option
Explanation:

Step 1: int no=5; The variable no is declared as integer type and initialized to 5.

Step 2: reverse(no); becomes reverse(5); It calls the function reverse() with '5' as parameter.

The function reverse accept an integer number 5 and it returns '0'(zero) if(5 == 0) if the given number is '0'(zero) or else printf("%d,", no); it prints that number 5 and calls the function reverse(5);.

The function runs infinetely because the there is a post-decrement operator is used. It will not decrease the value of 'n' before calling the reverse() function. So, it calls reverse(5) infinitely.

Note: If we use pre-decrement operator like reverse(--n), then the output will be 5, 4, 3, 2, 1. Because before calling the function, it decrements the value of 'n'.

Discussion:
34 comments Page 3 of 4.

Gopi krishna said:   1 decade ago
HI friends, What happen if(no==0){ return 0; } executes. Control pass to the main or still in the reverse?

Laxmi said:   1 decade ago
Yes Saket I agree with you. Actually there is not any false condition so it will execute infinitely.

Swetha said:   6 years ago
When the function is repeating continuously why can't the stack overflow?

How it becomes infinite?

Sandy said:   1 decade ago
Thanks I totally agree with Manraj Meena for further detail go check concept in C in Depth.

MOHIT THAPAR said:   8 years ago
The reverse is a function with return type int. Hence it will produce an error.

Saurabh gupta said:   9 years ago
I agree with you @@Bhavna. The output should be 5,5,4,4,3, 3,2,2,1,1.

Samata said:   2 decades ago
It is decrement operator then plz tell more explation about that.

Tushar said:   8 years ago
How we will know that function is 'recursive' ?

Sayli said:   9 years ago
Why we avoid 0 in preincreament operator?

Savita said:   8 years ago
Thanks for your explanation @Atul.


Post your comments here:

Your comments will be displayed after verification.