问题
单项选择题
有以下程序:
#include <stdio.h>
int f(int x)
int y;
if (x==0||x==1) return(3);
y=x*x-f(x-2);
return y;
main()
int z;
z=f((3); printf("%d\n", z);
程序的运行结果是( )。
A) 0
B) 9
C) 6
D) 8
答案
参考答案:C
解析: 本题主要考查的是递归函数。题目中的f()函数直接调用了自身,是一个递归函数。主函数中调用f()函数时传入的参数是3,所以会跳过if语句,执行y=x*x-f(x-2); ,也就是y=3*3-f(1); ,再次调用f()函数,传入参数1,此时满足if语句的条件,返回3。所以前面的y=3*3-f(1);就等价于y=3*3-3; ,结果是6,所以返回给主函数的结果是6。故本题应该选择C)。