问题
单项选择题
有以下程序:
#include <stdio.h>
int fun(int a, int b)
if (b==0) return a;
else return (fun(--a, --b) );
main()
printf("%d\n", fun(4, 2) );
程序的运行结果是( )。
A) 1
B) 2
C) 3
D) 4
答案
参考答案:B
解析: 本题考查的是递归函数。题目中给出的fun()函数直接调用了自身,所以是一个递归函数。其功能是,当参数b为0时,返回参数a的值;否则返回fun(--a,--b)的值。从这里可以看出,当b不断递减时,a也不断递减,直到b为0时返回a的值,那么a递减的总值就是b原来的值。所以,整个递归函数的作用其实是返回a-b的值,故应该选择B)。