递归函数
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);
}
这是关于递归函数的,fun函数有两个递归函数,最终答案是8。我一点都不理解整个过程是怎么发生的,感觉递归嵌套递归,糊涂了,求大侠们指教,能详细点最好,万分感谢!
/**我用的是VC++6.0**/ #include<stdio.h> void fun (int n,int *s) { int f1,f2,a=0,b=0;//加两个变量a,b用来记录f1,f2 if (n==1||n==2) *s=1; /*在此处前面设置断点(小手或者F9)*/ else { fun(n-1,&f1); /*在此处前面设置断点(小手或者F9)*/ fun(n-2,&f2); /*在此处前面设置断点(小手或者F9)*/ a=f1; /*在此处前面设置断点(小手或者F9)*/ b=f2; /*在此处前面设置断点(小手或者F9)*/ *s=f1+f2; /*在此处前面设置断点(小手或者F9)*/ }/**编译,连接,F5,F5,F5,F5...你就可以看到函数调用的一些细节**/ } int main() { int x; fun(6,&x); printf("%d\n",x); return 0; }