#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)); getchar (); return 0; } |
(A) -9 (B) 5. (C) 15 (D) 19 答复: (C) 说明: f()是一个递归函数,如果*a是偶数,它会将f(a+1,n-1)添加到*a。如果*a是奇数,那么f()从*a中减去f(a+1,n-1)。关于f(a,6)的执行,请参见下面的递归树。 .
f(add(12), 6) /*Since 12 is first element. a contains address of 12 */ | | 12 + f(add(7), 5) /* Since 7 is the next element, a+1 contains address of 7 */ | | 7 - f(add(13), 4) | | 13 - f(add(4), 3) | | 4 + f(add(11), 2) | | 11 - f(add(6), 1) | | 6 + 0
因此,最终返回的值是12+(7–(13–(4+(11–(6+0‘)’))=15 这个问题的小测验
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END