
#define N 2 #define M N+1.......c语言麻烦解释一下过程和结果,谢谢
#defineN2#defineMN+1.......c语言麻烦解释一下过程和结果,谢谢#defineN2#defineMN+1#defineNUM2*M+1Intfib...
#define N 2 #define M N+1.......c语言麻烦解释一下过程和结果,谢谢#define N 2
#define M N+1
#define NUM 2*M+1
Int fib(int n)
{return n<3?2:fib(n-1)+fib(n-2);}
main( )
{printf("%5d%5d\n",NUM,fib(5));
} 展开
#define M N+1
#define NUM 2*M+1
Int fib(int n)
{return n<3?2:fib(n-1)+fib(n-2);}
main( )
{printf("%5d%5d\n",NUM,fib(5));
} 展开
2个回答
展开全部
NUM就是宏的展开,等效于2*N+1+1,就是6
fib(5)就是fib(4)+fib(3),fib(4)就是fib(3)+fib(2),fib(3)就是fib(1)+fib(2),fib(2)=2,fib(1)=2;结果就是10;
fib(5)就是fib(4)+fib(3),fib(4)就是fib(3)+fib(2),fib(3)就是fib(1)+fib(2),fib(2)=2,fib(1)=2;结果就是10;
展开全部
声明一个公共常量N=2,把N看成常数2就可以
追问
fib(5)怎么求出来的呢?
追答
int fib(int n)
{return n<3?2:fib(n-1)+fib(n-2);}
判断n<3是否成立,如果成立就返回2,不成立返回fib(n-1)+fib(n-2);
等价于:
int fib(int n)
{
if(n<3)
return 2;
return fib(n-1)+fib(n-2);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询