Practice Recursion Easy (original) (raw)
Last Updated : 11 Apr, 2026
**Question 1 : Explain the functionality of the following functions.
C++ `
using namespace std; int fun1(int x, int y) { if (x == 0) return y; else return fun1(x - 1, x + y); }
int main()
{
cout << fun1(5, 2) << endl;
return 0;
}
C
int fun1(int x, int y) { if (x == 0) return y; else return fun1(x - 1, x + y); }
// Driver code
int main()
{
printf("%d\n", fun1(5, 2));
return 0;
}
Java
static int fun1(int x, int y) { if (x == 0) return y; else return fun1(x - 1, x + y); }
// Driver code public static void main(String[] args) { System.out.println(fun1(5, 2)); }
Python
def fun1(x, y) :
if (x == 0) :
return y
else :
return fun1(x - 1, x + y)Driver code
print(fun1(5, 2))
C#
using System;
class GFG {
static int fun1(int x, int y)
{
if (x == 0)
return y;
else
return fun1(x - 1, x + y);
}
// Driver code
static void Main(string[] args)
{
Console.WriteLine(fun1(5, 2));
}}
JavaScript
function fun1(x, y) { if (x == 0) return y else return fun1(x - 1, x + y) }
// Driver code
console.log(fun1(5, 2));
`
**Answer: This function adds the sum of first x natural numbers to y. It repeatedly decreases x and adds its value to y until x becomes 0. Final result: y + (1 + 2 + ... + x) = y + x(x + 1) / 2. For example, if x is 5 and y is 2, then fun should return 15 + 2 = 17.
**Question 2 : Explain the functionality of the following functions.
C++ `
using namespace std;
/* Assume that n is greater than or equal to 1 */ int fun1(int n) { if (n == 1) return 0; else return 1 + fun1(n / 2); }
// Driver code int main() {
cout << fun1(8);
return 0;}
Java
class GFG {
/* Assume that n is greater than or equal to 1 */
static int fun1(int n)
{
if (n == 1)
return 0;
else
return 1 + fun1(n / 2);
}
// Driver code
public static void main(String[] args)
{
System.out.println(fun1(8));
}}
Python
Assume that n is greater than or equal to 1 */
def fun1(n): if(n == 1): return 0 else: return 1 + fun1(n//2)
Driver code
print(fun1(8))
C#
using System;
// Assume that n is greater than or equal to 1 public class GFG {
static int fun1(int n)
{
if (n == 1)
return 0;
else
return 1 + fun1(n / 2);
}
// Driver code
static public void Main()
{
Console.WriteLine(fun1(8));
}}
JavaScript
// Assume that n is greater than or equal to 1 function fun1(n) { if (n <= 1) return 0 else return 1 + fun1(Math.floor(n / 2)) }
// Driver code console.log(fun1(8))
`
The above function calculates and returns ⌊log2(n)⌋. For example, if n is between 8 and 15 then fun1() returns 3. If n is between 16 to 31 then fun1() returns 4.
**Question 3
C++ `
using namespace std;
/* Assume that n is greater than or equal to 0 */ void fun2(int n) { if (n == 0) return;
fun2(n / 2);
cout << n % 2;}
// Driver code
int main() { fun2(21); return 0; }
C
#include <stdio.h>
void fun2(int n) { if(n == 0) return;
fun2(n/2); printf("%d", n%2); }
// Driver code
int main() {
fun2(21);
return 0;}
Java
class GFG {
/* Assume that n is greater than or equal to 1 */
static void fun2(int n)
{
if (n == 0)
return;
fun2(n / 2);
System.out.print(n % 2);
}
// Driver code
public static void main(String[] args) { fun2(21); }}
Python
def fun2(n): if(n == 0): return
fun2(n // 2)
print(n % 2, end="")Driver code
fun2(21)
C#
using System;
public class GFG {
static void fun2(int n)
{
if (n == 0)
return;
fun2(n / 2);
Console.Write(n % 2);
}
// Driver code
static public void Main()
{
fun2(21);
}}
JavaScript
// Assume that n is greater than or equal to 1 function fun2(n) { if (n == 0) return;
fun2(Math.floor(n / 2));
console.log(n % 2 + " ")}
// Driver code fun2(21)
`
**Answer: The function fun2() prints the binary equivalent of n. For example, if n is 21 then fun2() prints 10101.
**Question 4 : Predict the output of the following program.
C++ `
#include using namespace std;
void fun(int x) { if(x > 0) { fun(--x); cout << x <<" "; fun(--x); } }
// Driver code int main() { int a = 4; fun(a); return 0; }
C
#include<stdio.h> void fun(int x) { if(x > 0) { fun(--x); printf("%d\t", x); fun(--x); } }
// Driver code int main() { int a = 4; fun(a); getchar(); return 0; }
Java
import java.io.*;
class GFG {
static void fun(int x)
{
if(x > 0)
{
fun(--x);
System.out.print(x + " ");
fun(--x);
}
}
// Driver code
public static void main (String[] args)
{
int a = 4;
fun(a);
} }
Python
def fun(x):
if(x > 0):
x -= 1
fun(x)
print(x , end=" ")
x -= 1
fun(x)
Driver code
a = 4 fun(a)
C#
using System;
class GFG{
static void fun(int x)
{
if(x > 0)
{
fun(--x);
Console.Write(x + " ");
fun(--x);
}
}
// Driver code
static public void Main ()
{
int a = 4;
fun(a);
} }
JavaScript
function fun(x)
{
if (x > 0)
{
x -= 1
fun(x)
console.log(x + " ");
x -= 1
fun(x)
}
}
// Driver code let a = 4; fun(a)
`
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)Explain the functionality of below recursive functions.
**Question 5 : Predict the output of the following program.
C++ `
using namespace std;
void fun1(int n)
{
int i = 0;
if (n > 1)
fun1(n - 1);
for (i = 0; i < n; i++)
cout << " * ";
}
// Driver code int main() { fun1(4); }
C
void fun1(int n)
{
int i = 0;
if (n > 1)
fun1(n-1);
for (i = 0; i < n; i++)
printf(" * ");
}
// Driver code void main() { fun1(4); }
Java
class GFG {
static void fun1(int n)
{
int i = 0;
if (n > 1)
fun1(n - 1);
for (i = 0; i < n; i++)
System.out.print(" * ");
}
// Driver code
public static void main(String[] args) { fun1(4); }}
Python
def fun1(n): i = 0 if (n > 1): fun1(n - 1) for i in range(n): print(" * ", end="")
Driver code
fun1(4)
C#
using System; class GFG { static void fun1(int n) { int i = 0; if (n > 1) fun1(n - 1); for (i = 0; i < n; i++) Console.Write(" * "); }
// Driver code
static void Main(string[] args) { fun1(4); }}
JavaScript
function fun1(n) { let i = 0;
if (n > 1)
fun1(n - 1);
for (i = 0; i < n; i++)
console.log(" * ");}
// Driver code fun1(4)
`
Answer: Total numbers of stars printed is equal to 1 + 2 + .... (n-2) + (n-1) + n, which is n(n+1)/2.
Please write comments if you find any of the answers/codes incorrect, or you want to share more information about the topics discussed above.