Why Does this code Leads to Infinite Loop?????

#include<stdio.h>
#include<conio.h>
int reverse(int);
void main()
{
 int no=5;
 reverse(no);
 getch();
}

int reverse(int no)
{
 if(no==0)
 {
  return 0;
 }
 else
 {
  printf("%d",no);
 }
 reverse(no--);
}

Recommended Answers

All 4 Replies

I would say that once 5 is decremented to 0, it stays as 0 as all you have is 'return 0' doing nothing else, and you have no system exit at that point.

Steph Nicolaou ..its never entering the "if" part, you can check that. and if it has entered then the program would have ended after returning 0..
and the best part of this program is, 5 is never getting Decremented . Might be post Decrement doesn't work with recursion as it doesn't work with return.

It has to do with the way the call reverse(no--) is being implemented. The post decrement operator allows for the variable to be used in it's context before it is decremented. So, in your situation it is using the original value of no for the recursive call and decrementing it after that (which never occurs). Change that to reverse(--no) or reverse(no - 1) and you will get the behavior you are after.

Thanks L7Sqr :).......... Thread Solved.............

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.