问答题 给定程序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;。
【答案解析】