# Practice Questions for Recursion | Set 1

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);` `}`

Answer: The function fun() 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

 `// minimum index finder`   `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;`   `    ``// minIndex() returns index of minimum value in` `    ``// array arr[start_index...end_index] ` `    ``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);` `}`

## C++

 `// minimum index finder`   `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;`   `    ``// minIndex() returns index of minimum value in` `    ``// array arr[start_index...end_index] ` `    ``min_index = minIndex(arr, start_index, end_index);`   `    ``// swap the element at start_index and min_index` `    ``swap(arr[start_index], arr[min_index]);`   `    ``fun2(arr, start_index + 1, end_index);` `}`   `// This code is contributed by nishant_0073`

## Java

 `// minimum index finder` `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;`   `    ``// minIndex() returns index of minimum value in` `    ``//   array arr[start_index...end_index]` `    ``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);` `}`   `// This code is contributed by nishant_0073`

Answer: The function fun2() is a recursive implementation of Selection Sort.

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 : NikSta, nishant_0073

Article Tags :
Practice Tags :

27

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