Practice Questions for Recursion | Set 4

Question 1
Predict the output of following program.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <iostream>
using namespace std;
  
void fun(int x) 
    if(x > 0) 
    
        fun(--x); 
        cout << x <<" "
        fun(--x); 
    
  
int main() 
    int a = 4; 
    fun(a); 
    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 x)
{
  if(x > 0)
  {
     fun(--x);
     printf("%d\t", x);
     fun(--x);
  }
}
  
int main()
{
  int a = 4;
  fun(a);
  getchar();
  return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

def fun(x):
      
    if(x > 0):
        x -= 1
        fun(x) 
        print(x , end=" ")
        x -= 1
        fun(x) 
          
# Driver code
a = 4 
fun(a) 
  
# 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 x) 
    
        if(x > 0) 
        
            fun(--x); 
            Console.Write(x + " "); 
            fun(--x); 
        
    }  
      
    static public void Main () 
    
        int a = 4; 
        fun(a);  
    
}
// This code is contributed by SHUBHAMSINGH10

chevron_right


Output:

0 1 2 0 3 0 1
 
                   fun(4);
                   /
                fun(3), print(3), fun(2)(prints 0 1)
               /
           fun(2), print(2), fun(1)(prints 0)
           /
       fun(1), print(1), fun(0)(does nothing)
       /
    fun(0), print(0), fun(-1) (does nothing)

Question 2
Predict the output of 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 a[],int n)
{
  int x;
  if(n == 1)
    return a[0];
  else
    x = fun(a, n - 1);
  if(x > a[n - 1])
    return x;
  else
    return a[n - 1];
}
  
int main()
{
  int arr[] = {12, 10, 30, 50, 100};
  cout << " " << fun(arr, 5) <<" ";
  getchar();
  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 a[],int n)
{
  int x;
  if(n == 1)
    return a[0];
  else
    x = fun(a, n-1);
  if(x > a[n-1])
    return x;
  else
    return a[n-1];
}
  
int main()
{
  int arr[] = {12, 10, 30, 50, 100};
  printf(" %d ", fun(arr, 5));
  getchar();
  return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

import java.io.*;
   
class GFG {
   
    static int fun(int a[],int n)
    {
        int x;
        if(n == 1)
            return a[0];
        else
            x = fun(a, n - 1);
        if(x > a[n - 1])
            return x;
        else
            return a[n - 1];
    }
      
    public static void main (String[] args)
    {
        int arr[] = {12, 10, 30, 50, 100};
        System.out.println(" "+fun(arr, 5)+" ");
    }
}
  
// This code is contributed by shubhamsingh10

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

def fun( a, n):
    if(n == 1):
        return a[0]
    else:
        x = fun(a, n - 1)
    if(x > a[n - 1]):
        return x
    else:
        return a[n - 1]
  
# Driver code
arr = [12, 10, 30, 50, 100]
print(fun(arr, 5))
  
# This code is contributed by shubhamsingh10

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

using System;
  
public class GFG{
    static int fun(int[] a,int n)
    {
        int x;
        if(n == 1)
            return a[0];
        else
            x = fun(a, n - 1);
        if(x > a[n - 1])
            return x;
        else
            return a[n - 1];
    }
      
    static public void Main ()
    {
        int[] arr = {12, 10, 30, 50, 100};
        Console.Write(" "+fun(arr, 5)+" ");
    }
}
  
// This code is contributed by shubhamsingh10

chevron_right


Output:

100

fun() returns the maximum value in the input array a[] of size n.



Question 3
Predict the output of 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 i)
{
  if (i % 2) return (i++);
  else return fun(fun(i - 1));
}
   
int main()
{
  cout << " " << fun(200) << " ";
  getchar();
  return 0;
}
  
// This code is contributed by Shubhamsingh10

chevron_right


C

filter_none

edit
close

play_arrow

link
brightness_4
code

int fun(int i)
{
  if ( i%2 ) return (i++);
  else return fun(fun( i - 1 ));
}
  
int main()
{
  printf(" %d ", fun(200));
  getchar();
  return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

import java.io.*;
  
class GFG {
    static int fun(int i)
    {
        if (i % 2 == 1) return (i++);
        else return fun(fun(i - 1));
    }
      
    public static void main (String[] args) {
        System.out.println(" " + fun(200) + " ");
    }
}
  
// 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 fun(int i)
{
    if (i % 2 == 1) return (i++);
    else return fun(fun(i - 1));
}
  
// Driver code    
static public void Main ()
    Console.WriteLine(fun(200));
}
}
  
// This code is contributed by Shubhamsingh10

chevron_right


Output:

199

If n is odd then returns n, else returns (n-1). Eg., for n = 12, you get 11 and for n = 11 you get 11. The statement “return i++;” returns value of i only as it is a post increment.

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.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Improved By : SHUBHAMSINGH10

Article Tags :
Practice Tags :


13


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