1,432 views
0 votes
0 votes
#include<stdio.h>
void print(int n)
{
    if (n > 4000)
        return;
    printf("%d ", n);
    print(2*n);
    printf("%d ", n);
}

int main()
{
    print(10);
    getchar();
    return 0;
}
 

PLEASE EXPLAIN THE OUTPUT

2 Answers

1 votes
1 votes

You can do it using recursion tree or stack.

Let these be line numbers:

1. if (n > 4000) 
2.       return; 
3.    printf("%d ", n); 
4.    print(2*n); 
5.    printf("%d ", n); 

Whenever print(int n) is recursively called, the 5th line will be executed once the recursive call is over and so on.

0 votes
0 votes

First of all the answer to this question is :

10 20 40 80 160 320 640 1280 2560 2560 1280 640 320 160 80 40 20 10

 

At the initial call print(10) is called, the if (n > 4000) is not true and it prints the next statement  i.e printf("%d ", n); ie 

Output : 10 

 

For convenience and understanding  i am gonna number the statements from 

  1  if (n > 4000) 
  2     return; 
  3  printf("%d ", n); 
  4  print(2*n); 
  5  printf("%d ", n); 

The printf in stat 3 is executed till n =2560 . As soon as print(2560*2) is called ie n becomes 5120. Now the statement 1 returns true and returns to the previous callee at statement 5 with n = 2560, prints that and that function exits to the previous callee with n to be 2560 and so on .. 

Let me know if u still have confusions

 

 

Related questions

0 votes
0 votes
2 answers
1
Debargha Mitra Roy asked Apr 10
100 views
What is the output of the below code?#include <stdio.h void main() { static int var = 5; printf("%d ", var ); if (var) main(); }a. 1 2 3 4 5b. 1c. 5 4 3 2 1d. Error
3 votes
3 votes
3 answers
2
Laxman Ghanchi asked May 19, 2023
1,157 views
#include<stdio.h void print(int n) { printf("Hello "); if(n++ == 0) return ; print(n); n++; } int main() { void print(); print(-4); }How many times printf execute?? And H...
0 votes
0 votes
1 answer
3
Laxman Ghanchi asked May 19, 2023
684 views
#include<stdio.h>void print(int n){ printf("Hello "); if(n++ == 0) return ; print(n); n++;}int main(){ void print(); print(-4);}