递归函数
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;
}