📜  门| GATE CS 2011 |第49章

📅  最后修改于: 2021-06-28 18:19:21             🧑  作者: Mango

考虑具有两个参数的同一个递归C函数

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

当函数foo被称为foo(513,2)时,其返回值是多少?
(A) 9
(B) 8
(C) 5
(D) 2答案: (D)
说明: foo(513,2)将返回1 + foo(256,2)。除了最后一次调用foo(1,2)以外,所有后续递归调用(包括foo(256,2))都将返回0 + foo(n / 2,2)。最后一次调用foo(1,2)返回1。因此,foo(513,2)返回的值为1 + 0 + 0…。 + 0 + 1。
函数foo(n,2)基本上返回数字n中的位数之和(或设置位数)。
这个问题的测验