Explain the functionality of following functions.
Question 1
C++
int fun1( int n)
{
if (n == 1)
return 0;
else
return 1 + fun1(n/2);
}
|
C
int fun1( int n)
{
if (n == 1)
return 0;
else
return 1 + fun1(n/2);
}
|
Java
static int fun1( int n)
{
if (n == 1 )
return 0 ;
else
return 1 + fun1(n/ 2 );
}
|
Python3
def fun1(n):
if (n = = 1 ):
return 0
else :
return 1 + fun1(n / 2 )
|
C#
static int fun1( int n)
{
if (n == 1)
return 0;
else
return 1 + fun1(n/2);
}
|
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
C++
void fun2( int n)
{
if (n == 0)
return ;
fun2(n/2);
cout << n%2 << endl;
}
|
C
void fun2( int n)
{
if (n == 0)
return ;
fun2(n/2);
printf ( "%d" , n%2);
}
|
Java
static void fun2( int n)
{
if (n == 0 )
return ;
fun2(n/ 2 );
System.out.println(n% 2 );
}
|
Python3
def fun2(n):
if (n = = 0 ):
return
fun2(n / 2 )
print (n % 2 , end = "")
|
C#
void fun2( int n)
{
if (n == 0)
return ;
fun2(n/2);
Console.Write(n%2);
}
|
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.