计算机二级C语言--递归调用问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 13:27:29
问以下程序的输出结果是多少?本人马上参加二级考试,遇此类题十分困惑!
请高手详细回答(一步一步的)。我不会吝啬的,我会追加到50分!谢谢了

#include<stdio.h>
int fun(int n,int *s)
{int f1,f2;
if(n==0//n==1)
*s=1;
else
{fun(n-1,&f1);
fun(n-2,&f2);
*s=f1+f2;
}}
void main( )
{ int x;
fun(6,&x);
printf("\n%d" ,x);}

结果是:13
#include<stdio.h>
int fun(int n,int *s)
{
int f1,f2;
if(n==0||n==1)//如果n==0或者n==1的情况下*s=1;
*s=1;
else//如果不等于0又不等于1的情况
{
fun(n-1,&f1);//递归调用
fun(n-2,&f2);//递归调用
*s=f1+f2;
}return 0;
}
void main( )
{
int x;
fun(6,&x);//调用函数fun()
printf("\n%d" ,x);//输出结果为13
}