Practice Questions for Recursion | Set 7

Question 1 Predict the output of the following program. What does the following fun() do in general?

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <stdio.h>
  
int fun ( int n, int *fp )
{
    int t, f;
  
    if ( n <= 1 )
    {
        *fp = 1;
        return 1;
    }
    t = fun ( n-1, fp );
    f = t + *fp;
    *fp = t;
    return f;
}
  
int main()
{
    int x = 15;
    printf("%d\n",fun(5, &x));
  
    return 0;
}

chevron_right


Output:

8 

The program calculates nth Fibonacci Number. The statement t = fun ( n-1, fp ) gives the (n-1)th Fibonacci number and *fp is used to store the (n-2)th Fibonacci Number. Initial value of *fp (which is 15 in the above program) doesn’t matter. Following recursion tree shows all steps from 1 to 10, for execution of fun(5, &x).

                              (1) fun(5, fp)
                              /           \
                         (2) fun(4, fp)  (10) t = 5, f = 8, *fp = 5
                         /          \
                   (3) fun(3, fp)  (9) t = 3, f = 5, *fp = 3
                  /            \
           (4) fun(2, fp)      (8) t = 2, f = 3, *fp = 2
          /          \
   (5) fun(1, fp)   (7) t = 1, f = 2, *fp = 1
   /
(6) *fp = 1



Question 2: Predict the output of the following program.

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <stdio.h>
  
void fun(int n)
{
    if(n > 0)
    {
        fun(n-1);
        printf("%d ", n);
        fun(n-1);
    }
}
  
int main()
{
    fun(4);
    return 0;
}

chevron_right


Output

1 2 1 3 1 2 1 4 1 2 1 3 1 2 1
                     fun(4)
                   /
                fun(3), print(4), fun(3) [fun(3) prints 1 2 1 3 1 2 1]
               /
           fun(2), print(3), fun(2) [fun(2) prints 1 2 1]
           /
       fun(1), print(2), fun(1) [fun(1) prints 1]
       /
    fun(0), print(1), fun(0) [fun(0) does nothing]

Please write comments if you find any of the answers/codes incorrect, or you want to share more information/questions about the topics discussed above.



My Personal Notes arrow_drop_up

Improved By : Akanksha_Rai



Article Tags :
Practice Tags :


4


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.