二手拉伸膜生产机器:c语言 来解释一下1h

来源:百度文库 编辑:高校问答 时间:2024/05/03 07:46:39
(35) 有如下程序
long fib(int n)
{ if(n>2) return(fib(n-1)+fib(n-2));
else return(2);
}
main0
{ printf(“%d\n”,fib(3));
该程序的输出结果是
A) 2 B) 4 C) 6 D) 8
谁能说明一下个行的意思
说的越详细越好

选B...按类分应该是一个递归函数...结果为:4.....首先主函数传递一个3..然后进行判断..由于大于2那么进行return(fib(n-1)+fib(n-2)); 执行完里面的运算之后是:return(2+2); ..原因是:fib(n-1)=fib(3-1)=fib(2)...2=2并且不大于2所以返回一值为2...后者也是一样..返回一个2..2+2=4

回答完毕

fib(3)=fib(2)+fib(1),这时候,程序会先计算fib(2)和fib(1),而2和1都不大于2,所以fib(2)和fib(1)都返回2,所以结果为4。

如果题目问的是fib(4),那么fib(4)=fib(3)+fib(2),程序要先计算fib(3)和fib(2),fib(3)又等于fib(2)+fib(1),算出来为4,fib(2)算出来为2,所以结果为6。

B,简单的递归,详细懒得说了

选A。没悬赏,不解释了。