Practice Questions for Recursion | Set 1
Last Updated :
20 Feb, 2023
Explain the functionality of the following functions.
Question 1
C++
int fun1( int x, int y)
{
if (x == 0)
return y;
else
return fun1(x - 1, x + y);
}
|
C
int fun1( int x, int y)
{
if (x == 0)
return y;
else
return fun1(x - 1, x + y);
}
|
Java
static int fun1( int x, int y)
{
if (x == 0 )
return y;
else
return fun1(x - 1 , x + y);
}
|
Python3
def fun1(x, y) :
if (x = = 0 ) :
return y
else :
return fun1(x - 1 , x + y)
|
C#
static int fun1( int x, int y)
{
if (x == 0)
return y;
else
return fun1(x - 1, x + y);
}
|
Javascript
<script>
function fun1(x, y)
{
if (x == 0)
return y
else
return fun1(x - 1, x + y)
}
</script>
|
Answer: The function fun1() calculates and returns ((1 + 2 … + x-1 + x) +y), which is x(x+1)/2 + y. For example, if x is 5 and y is 2, then fun should return 15 + 2 = 17.
Question 2
C++
int minIndex( int arr[], int s, int e)
{
int sml = INT32_MAX;
int mindex;
for ( int i = s; i < e; i++) {
if (sml > arr[i]) {
sml = arr[i];
mindex = i;
}
}
return mindex;
}
void fun2( int arr[], int start_index, int end_index)
{
if (start_index >= end_index)
return ;
int min_index;
int temp;
min_index = minIndex(arr, start_index, end_index);
swap(arr[start_index], arr[min_index]);
fun2(arr, start_index + 1, end_index);
}
|
C
int minIndex( int arr[], int s, int e)
{
int sml = INT32_MAX;
int mindex;
for ( int i = s; i < e; i++) {
if (sml > arr[i]) {
sml = arr[i];
mindex = i;
}
}
return mindex;
}
void fun2( int arr[], int start_index, int end_index)
{
if (start_index >= end_index)
return ;
int min_index;
int temp;
min_index = minIndex(arr, start_index, end_index);
temp = arr[start_index];
arr[start_index] = arr[min_index];
arr[min_index] = temp;
fun2(arr, start_index + 1, end_index);
}
|
Java
static int minIndex( int arr[], int s, int e)
{
int sml = Integer.MAX_VALUE;
int mindex = ;
for ( int i = s; i < e; i++) {
if (sml > arr[i]) {
sml = arr[i];
mindex = i;
}
}
return mindex;
}
static void fun2( int arr[], int start_index, int end_index)
{
if (start_index >= end_index)
return ;
int min_index;
int temp;
min_index = minIndex(arr, start_index, end_index);
temp = arr[start_index];
arr[start_index] = arr[min_index];
arr[min_index] = temp;
fun2(arr, start_index + 1 , end_index);
}
|
Python3
def minIndex(arr, s, e):
sml = sys.maxsize
mindex = 0
for i in range (s, e):
if (sml > arr[i]):
sml = arr[i]
mindex = i
return mindex
def fun2(arr, start_index, end_index):
if (start_index > = end_index):
return
min_index = minIndex(arr, start_index, end_index)
arr[start_index], arr[min_index] = arr[min_index], arr[start_index]
fun2(arr, start_index + 1 , end_index)
|
C#
static int minIndex( int [] arr, int s, int e)
{
int sml = Int32.MaxValue;
int mindex;
for ( int i = s; i < e; i++)
{
if (sml > arr[i])
{
sml = arr[i];
mindex = i;
}
}
return mindex;
}
static void fun2( int [] arr, int start_index, int end_index)
{
if (start_index >= end_index)
{
return ;
}
int min_index;
int temp;
min_index = minIndex(arr, start_index, end_index);
temp = arr[start_index];
arr[start_index] = arr[min_index];
arr[min_index] = temp;
fun2(arr, start_index + 1, end_index);
}
|
Javascript
<script>
function minIndex(arr, s, e)
{
var sml = Number.MAX_SAFE_INTEGER;
var mindex;
for (int i = s; i < e; i++) {
if (sml > arr[i]) {
sml = arr[i];
mindex = i;
}
}
return mindex;
}
function fun2(arr, start_index, end_index)
{
if (start_index >= end_index)
return ;
var min_index;
var temp;
min_index = minIndex(arr, start_index, end_index);
temp = arr[start_index];
arr[start_index] = arr[min_index];
arr[min_index] = temp;
fun2(arr, start_index + 1, end_index);
}
</script>
|
Answer: The function fun2() is a recursive implementation of Selection Sort.
Time complexity: O(N2)
Auxiliary Space: O(1)
Please write comments if you find any of the answers/codes incorrect, or you want to share more information about the topics discussed above.
Please Login to comment...