C语言问题

[复制链接]
查看11 | 回复1 | 2010-12-16 16:14:50 | 显示全部楼层 |阅读模式
#include
void fun(int n, int *p)
{intf1,f2;
if(n==1||n==2)
*p=1;
else
{ fun(n-1,&f1);fun(n-2,&f2);

*p=f1+f2;
}
}
main()
{ ints;
fun( 3 ,&s); printf("%d\n", s );
}
运行结果为2
求解释、、、、、、

回复

使用道具 举报

千问 | 2010-12-16 16:14:50 | 显示全部楼层
#include void fun(int n, int *p){intf1,f2; if(n==1||n==2)
*p=1; else { fun(n-1,&f1);//main函数里调用的进这个分支了,因为n=3,这时候n-1=2和n-2=1都会进上面的if分支,fun(n-2,&f2);//分别得出f1=1,f2=11+1=2,即*p=2,p是指向s的地址,所以s也为2就是最后的结果
*p=f1+f2; }}main(){ ints;fun( 3 ,&s); printf("%d\n", s );}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行