GFG App
Open App
Browser
Continue

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

## Python3

 `def` `fun1(x, y) : ` ` `  `    ``if` `(x ``=``=` `0``) : ` `        ``return` `y ` `    ``else` `: ` `        ``return` `fun1(x ``-` `1``, x ``+` `y) ` ` `  `# This code is contributed by divyesh072019`

## C#

 `static` `int` `fun1(``int` `x, ``int` `y) ` `{ ` `    ``if` `(x == 0) ` `        ``return` `y; ` `    ``else` `        ``return` `fun1(x - 1, x + y); ` `} ` ` `  `// This code is contributed by divyesh072019`

## Javascript

 ``

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++

 `// 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`

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

## 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`

## Python3

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

## C#

 `// minimum index finder ` `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; ` `   `  `    ``// 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 avanitrachhadiya2155 `

## Javascript

 ``

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

Time complexity: O(N2)

Auxiliary Space: O(1)