Evaluate the following:
int fn(int v)
{
if(v==1 || v==0)
return 1;
if(v%2==0)
return fn(v/2)+2;
else
return fn(v-1)+3;
}
for fn(7);
1) 10
2) 11
3) 1
Answers were Sorted based on User's Feedback
the answer is : 11
solution :
since v=7
initially f(6)+ 3 is executed ( being a recurrsive
function) fn is again called with v=6 and the return now
is f(3) + 2 and again fn is called with v=3 and the return
now is f(2) +3 and again fn is called with v=0.now
recurrsion ends since f(0) is 1
f(0)=1
f(0)+2=3
f(2)=f(0)+2=1+2
f(2)+3=6
f(3)=f(2)+3=6
f(3)+2=6+2=8
f(6)=f(3)+2=8
f(6)+3=8+3=11
f(7)=f(6)+3
f(7)=11
now v hav to back track and keep adding
1+2+3+2+3 = 11.
Is This Answer Correct ? | 14 Yes | 1 No |
Answer / abdur rab
The answer is 11
( 7 - 1 ) + 3 -> 11 = (8 +3)
( 6 / 2 ) + 2 --> 8 = (6 +2)
( 3 - 1 ) + 3 ---> 6 = (3 +3)
( 2 / 2 ) + 2 ----> 3 = (1 +2)
Is This Answer Correct ? | 5 Yes | 1 No |
Answer / vinay
11 because it resrve every value in stack untill it become
1 then add all values.
Is This Answer Correct ? | 3 Yes | 0 No |
Answer / chandrakala
this program returns the result as
1.
because,
7 is not equal to 1 or 0 and it is not mod by 2. so it will
go to else condition .in that 7-1 is performed and it mod
by 2 so 6/2=3 it once again go to else 3-1=2 is enter in to
function 2%2\=0 so 2/2 is performed.now v is 1 so it
returns 1 as answer.
Is This Answer Correct ? | 5 Yes | 8 No |
Answer / lakshmi
first it checkes the main function i.e., fn()
int fn(7)
if(7==1||v==0) : this is false so the complier executes
the next if condition
if(7%2==0) : This is false so it executes the else
instruction
return fn(6)+3; :here we are again calling the fn
function .So the loop executes till the 7 becomes 1
After this the first if condition is true so it rerurns 1
to the function fn(1)+3
so the answer is 1.
Is This Answer Correct ? | 0 Yes | 7 No |
How can I remove the leading spaces from a string?
How to write a C program to determine the smallest among three nos using conditional operator?
1) int main() { unsigned char a = 0; do { printf("%d=%c\n",a,a); a++; }while(a!=0); return 0; } can anyone please explain the explain the output
How many levels of indirection in pointers can you have in a single declaration?
0 Answers Agilent, ZS Associates,
what is the structure?
What is meaning of "Void main" in C Language.
24 Answers Ford, GU, HCL, IBIBS, JUW, TCS,
What is null character in c?
while loop contains parts a) initialisation, evalution of an expression,increment /decrement b) initialisation, increment/decrement c) condition evalution d) none of the above
What is static memory allocation?
What is union and structure?
Not all reserved words are written in lowercase. TRUE or FALSE?
What is assert and when would I use it?