Skip to content
Related Articles

Related Articles

Improve Article
Practice Questions for Recursion | Set 2
  • Difficulty Level : Easy
  • Last Updated : 31 May, 2021

Explain the functionality of following functions. 

Question 1 

Python3




/* 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);
}
 
// This code is contributed by shubhamsingh10

C




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

Java




/* 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);
}
 
// This code is contributed by shubhamsingh10

Python3




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

C#




/* 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);
}
 
// This code is contributed by shubhamsingh10

Javascript




<script>
 
/* Assume that n is greater than or equal to 1 */
function fun1(n)
{
    if (n == 1)
        return 0
    else
        return 1 + fun1(n / 2)
}
 
// This code is contributed by gottumukkalabobby
 
</script>

Answer: The function calculates and returns 

log2floor

. 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 



C++




/* 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;
}
 
//This code is contributed by shubhamsingh10

C




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

Java




/* 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);
}
 
// This code is contributed by Shubhamsingh10

Python3




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

C#




void fun2(int n)
{
if(n == 0)
    return;
   
fun2(n/2);
Console.Write(n%2);
}
// This code is contributed by shubhamsingh10

Javascript




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

Answer: The function fun2() prints binary equivalent of n. For example, if n is 21 then fun2() prints 10101. 
Note that 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.
 

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live




My Personal Notes arrow_drop_up
Recommended Articles
Page :