Practice Questions for Recursion | Set 7

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

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <iostream>
using namespace std;
  
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;
    cout << fun(5, &x) << endl;
  
    return 0;
}
  
// This code is contributed by shubhamsingh10

chevron_right


C

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


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

import java.io.*;
  
class GFG {
    static int fp = 15;
    static int fun ( int n)
    {
        int t, f;
       
        if ( n <= 1 )
        {
            fp = 1;
            return 1;
        }
        t = fun ( n - 1);
        f = t + fp;
        fp = t;
        return f;
    }
     public static void main (String[] args) 
    {
        System.out.println(fun(5));
    }
}
// This code is contributed by shubhamsingh10

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

fp = 15
def fun ( n ):
    global fp
    if ( n <= 1 ):
        fp = 1
        return 1
      
    t = fun ( n - 1 )
    f = t + fp
    fp = t
    return f
  
# Driver code
  
print(fun(5))
  
# This code is contributed by shubhamsingh10

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

using System;
   
class GFG{
    static int fp = 15;
    static int fun ( int n)
    {
        int t, f;
      
        if ( n <= 1 )
        {
            fp = 1;
            return 1;
        }
        t = fun ( n - 1 );
        f = t + fp;
        fp = t;
        return f;
    }
      
    static public void Main ()
    {
        Console.Write(fun(5));
    }
}
// This code is contributed by shubhamsingh10

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.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <iostream>
using namespace std;
void fun(int n) 
    if(n > 0) 
    
        fun(n - 1); 
        cout << n <<" "
        fun(n - 1); 
    
  
int main() 
    fun(4); 
    return 0; 
  
// This code is contributed by shubhamsingh10

chevron_right


C

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


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

import java.util.*;
   
class GFG{
static void fun(int n) 
    if(n > 0
    
        fun(n - 1); 
        System.out.print(n+" "); 
        fun(n - 1); 
    
}
  
public static void main(String[] args)
    fun(4);
}
}
// This code is contributed by Shubhamsingh10

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

def fun(n):
      
    if(n > 0):
        fun(n - 1
        print(n,end=" ")
        fun(n - 1
  
# driver code
  
fun(4
  
# This code is contributed by shubhamsingh10

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

using System;
  
class GFG{
    static void fun(int n) 
    
        if(n > 0) 
        
            fun(n - 1); 
            Console.Write(n+" ");
            fun(n - 1); 
        
    
        
    static public void Main ()
    {  
        fun(4);   
    
}
  
// This code is contributed by shubhamsingh10

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.

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.




My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :


11


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