Open In App

Practice Questions for Recursion | Set 2

Explain the functionality of the following functions. 

Question 1 






/* 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);
}




/* 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);
}




# Assume that n is greater than or equal to 1 */
def fun1(n):
    if(n == 1):
        return 0
    else:
        return 1 + fun1(n//2)




/* 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);
}




<script>
 
/* 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))
}
</script>

Answer: The function calculates and returns

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 2 




/* Assume that n is greater than or equal to 0 */
void fun2(int n)
{
if(n == 0)
    return;
 
fun2(n/2);
cout << n%2 << endl;
}




/* Assume that n is greater than or equal to 0 */
void fun2(int n)
{
  if(n == 0)
    return;
 
  fun2(n/2);
  printf("%d", n%2);




/* Assume that n is greater than or equal to 1 */
static void fun2(int n)
{
if(n == 0)
    return;
  
fun2(n/2);
System.out.println(n%2);
}




# Assume that n is greater than or equal to 0 */
def fun2(n):
    if(n == 0):
        return
     
    fun2(n // 2)
    print(n % 2, end="")




void fun2(int n)
{
if(n == 0)
    return;
   
fun2(n/2);
Console.Write(n%2);
}




<script>
 
// Assume that n is greater than or equal to 1
function fun2(n)
{
    if (n == 0)
        return;
     
    fun2(Math.floor(n / 2));
    document.write(n % 2 + " ")
}
</script>

Auxiliary Space: O(log2N), due to recursion call stack

Time Complexity: O(log N)

Answer: The function fun2() prints the binary equivalent of n. For example, if n is 21 then fun2() prints 10101. 

Note: Above functions are just for practicing recursion, they are not the ideal implementation of the functionality they provide. 

Please write comments if you find any of the answers/codes incorrect. 


Article Tags :