问答题
给定程序MODI1.C中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、……
例如,若给n输入7,该项的斐波拉契数值为:13。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
给定源程序:
#include
long fun(int g)
{
/**********found**********/
switch(g);
{ case 0: return 0;
/**********found**********/
case 1 ;case 2 : return 1 ;
}
return( fun(g-1)+fun(g-2) );
}
main()
{ long fib; int n;
printf("Input n: "); scanf("%d",&n); printf("n = %d/n",n);
fib=fun(n);
printf("fib = %d/n/n",fib);
}
【正确答案】第一处:switch后有多余的分号。
第二处:case 1后没有返回语句,也应该为return 1;。所以应改为:case 1: return 1; case2:return 1;。
【答案解析】