个案护理特点:c语言问题

来源:百度文库 编辑:高考问答 时间:2024/04/29 05:39:46
【2.35】下面程序的输出结果是____。
#include <stdio.h>
fun(int n, int *s)
{ int f1, f2;
if(n==1||n==2)
*s=1;
else
{ fun(n-1, &f1);
fun(n-2, &f2);
*s=f1+f2;
}
}
main()
{ int x;
fun(6, &x);
printf("%d\n", x);
}
A) 6 B) 7 C) 8 D) 9
参考答案: C
要求有详细分析过程。

我也是第一次看这个题目,
传参的规律总结了一下:
fun(6-1,&f1)之后其实执行了很多嵌套的fun方法,我下面的图总结了规律, 而最后执行的2组语句其实是fun(2,*);fun(1,*) 我们可以得出传3对应指针指向的整数是1+1=2, 传4对应指针指向的整数是2+1=3;5对应....是3+2=5;
6则是5+3=8。

fun(6,&x)
>>
fun(6-1,&f11);
{ fun(5-1,&f12);
{ fun(4-1,&f13);
{ fun(3-1,&f14);
fun(2-1,&f24);
}
fun(4-2;&f23);
}
fun(5-2,&f22);
}
fun(6-2,&f21);

递归问题啊。递归函数fun调用自己后通过整形地址传递参数

o

答安是8

我觉得最好的建议就是多看看c语言教程