Practice Questions for Recursion | Set 2

Explain the functionality of following functions.

Question 1

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


C

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


C

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right



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.

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.




My Personal Notes arrow_drop_up

Improved By : SHUBHAMSINGH10

Article Tags :
Practice Tags :


8


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