A-A+

有以下程序 #include void fun(int n int*p)

2022-08-05 22:14:44 问答库 阅读 172 次

问题详情

有以下程序 #include<stdi0.h> void fun(int n,int*p) (int f1,f2; if(n==1|| n==2)*p=1; else { fun(n-1,&f1);fun(n-2,&f2); *p=f1+f2; } } main { int s; fun(3,&s);printf("%d",s); } 程序的运行结果是()。
A.2
B.3
C.4
D.5请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:A
在函数fun中对参数n的值进行判断,如果其值等于1或2,则*p=1,否则,函数fun进行递归调用fun(n.1,&f1);fun(13.2,&f2);*p=n+f2;在主函数调用fun函数时传递给参数n的值为3,fun函数又递归用了两次自身fun(2,&n);fun(1,&f1);所以n和f2的值都为1,通过指针P的引用,变量S的值为2。

考点:程序