33 33 votes What is the output printed by the following program? #include <stdio.h> int f(int n, int k) { if (n == 0) return 0; else if (n % 2) return f(n/2, 2*k) + k; else return f(n/2, 2*k) - k; } int main () { printf("%d", f(20, 1)); return 0; } $5$ $8$ $9$ $20$ Algorithms gateit-2005 algorithms identify-function normal + – Ishrat Jahan 13.7k views answer comment Share Follow Print See all 2 Comments 2 2 Comments reply bthebestSelf commented Dec 26, 2020 reply Follow flag Answer should be -15 which is not given in the options, observe carefully the value of k 1 1 replyShare Yaman Sahu commented Nov 13, 2021 i edited by Yaman Sahu Nov 13, 2021 reply Follow flag int f(int n, int k) { if (n == 0) return 0; else if (n % 2) return f(n/2, 2*k) + k; // This condition is true when n%2 is 1 else return f(n/2, 2*k) - k; // otherwise } bthebestSelf you are doing n%2 = 0 as true, then you get -15 as the answer. If you doing n%2 = 0 as false then you get 9 as an answer :) 6 6 replyShare Please log in or register to add a comment.
Best answer 46 46 votes See the following calling sequence. Boxed values show the return values. Hence, answer is option C. Rajesh Pradhan answered Nov 13, 2016 • edited May 7, 2021 by gatecse Rajesh Pradhan comment Share Follow See all 6 Comments 6 6 Comments reply Show 3 previous comments shashankrustagi commented Jan 14, 2021 reply Follow flag ya, its ok. you mistook, you will never mistook it agin. ok keep it up vamsi 0 0 replyShare ritiksri8 commented May 11, 2024 reply Follow flag @Vamsi Krishna Satya I also mistook... 0 0 replyShare pavansan commented Jan 4, 2025 reply Follow flag after much struggle finally understood 0 0 replyShare Please log in or register to add a comment.
13 13 votes The sequence has to be followed. 6.) f(20,1) = 9. 5.) f(10,2) - 1 = 9 4.) f(5,4) - 2 = 10 3.) f(2,8) + 4 = 12 2.) f(1,16) - 8 = 8 1.) f(0,32) + 16 = 16 Gate Keeda answered Nov 3, 2014 Gate Keeda comment Share Follow See all 7 Comments 7 7 Comments reply Neha Sisodiya commented Jul 14, 2015 reply Follow flag Why have u executed else part in 5th step I guess else if has to be executed since 10 which is divisible by 2. 0 0 replyShare Arjun commented Jul 14, 2015 reply Follow flag else if (n%2) This will be true if n is NOT a multiple of 2. When n is a multiple of 2, n%2 returns 0 and if will be false. 12 12 replyShare Neha Sisodiya commented Jul 15, 2015 reply Follow flag Thank you sir. 1 1 replyShare neha singh commented Aug 24, 2016 reply Follow flag how values are come i mean like 9,10,8.,16 etc.Anybody plz explain? 0 0 replyShare neha singh commented Aug 24, 2016 reply Follow flag Can anybody plzz explain how this series values comes. 0 0 replyShare neha singh commented Aug 24, 2016 reply Follow flag its clear now. 0 0 replyShare Sandeep Suri commented Jan 9, 2018 reply Follow flag Else if (n%2) when n is multiple of 2 it will be like else if (0) therefore it will return false and will execute next else and return f(n/2,2*k) - K.... 0 0 replyShare Please log in or register to add a comment.
1 1 vote 9 will be printed. Answer: C manish_pal_sunny answered Aug 17, 2020 manish_pal_sunny comment Share Follow 0 reply Please log in or register to add a comment.