考虑下面的递归C函数。如果在main()中调用get(6)函数,那么在返回main()之前,get()函数将被调用多少次?
null
void get ( int n) { if (n < 1) return ; get(n-1); get(n-3); printf ( "%d" , n); } |
(A) 15 (B) 25 (C) 35 (D) 45 答复: (B) 说明:
get(6) [25 Calls] / [17 Calls] get(5) get(3) [7 Calls] / get(4) get(2)[5 Calls] / [7 Calls] get(3) get(1)[3 Calls] / get(2) get(0) / [3 Calls]get(1) get(-1) / get(0) get(-2)
我们可以通过运行下面的程序来验证这一点。
# include <stdio.h> int count = 0; void get ( int n) { count++; if (n < 1) return ; get(n-1); get(n-3); } int main() { get(6); printf ( "%d " , count); } |
产出:25 这个问题的小测验
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END