# GATE2011-48

4.1k views

Consider the following recursive C function that takes two arguments.

unsigned int foo(unsigned int n, unsigned int r) {
if (n>0) return ((n%r) + foo(n/r, r));
else return 0;
}


What is the return value of the function $\text{foo}$ when it is called as $\text{foo(345, 10)}$?

1. $345$
2. $12$
3. $5$
4. $3$

edited
1
Sum of the digits in the given decimal number 345, 3+4+5 = 12 is the correct option.
0
would the answer have been any different for signed int ?

Red colour represents return values.

edited
A) The function returns the sum of digits of the given number.

so 5+4+3 = 12

Following recursive calls

∴ 5+4+3+0 = 12

0
What would be the reccurance equation for this question?

## Related questions

1
2.2k views
Consider the following recursive C function that takes two arguments. unsigned int foo(unsigned int n, unsigned int r) { if (n>0) return ((n%r) + foo(n/r, r)); else return 0; } What is the return value of the function $\text{foo}$ when it is called as $\text{foo(513, 2)}$? $9$ $8$ $5$ $2$
Consider the code fragment written in C below : void f (int n) { if (n <= 1) { printf ("%d", n); } else { f (n/2); printf ("%d", n%2); } } Which of the following implementations will produce the same output for $f(173)$ as the above code? P1 P2 void f (int n) { if (n/2) { f(n/2 ... ("%d", n); } else { printf ("%d", n%2); f (n/2); } } Both $P1$ and $P2$ $P2$ only $P1$ only Neither $P1$ nor $P2$
Consider the code fragment written in C below : void f (int n) { if (n <=1) { printf ("%d", n); } else { f (n/2); printf ("%d", n%2); } } What does f(173) print? $010110101$ $010101101$ $10110101$ $10101101$
What is the value printed by the following C program? #include<stdio.h> int f(int *a, int n) { if (n <= 0) return 0; else if (*a % 2 == 0) return *a+f(a+1, n-1); else return *a - f(a+1, n-1); } int main() { int a[] = (12, 7, 13, 4, 11, 6); printf("%d", f(a, 6)); return 0; } $-9$ $5$ $15$ $19$