下列给定程序中,函数proc()的功能是:用递归算法计算斐波拉契级数列中第n项的值。从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,…例如,若给n输入8,该项的斐波拉契级数值为21。 请修改程序中的错误,使它能得出正确的结果。

admin2013-03-25  29

问题 下列给定程序中,函数proc()的功能是:用递归算法计算斐波拉契级数列中第n项的值。从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,…例如,若给n输入8,该项的斐波拉契级数值为21。
    请修改程序中的错误,使它能得出正确的结果。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
#inciude
long proc(int g)
{
    //****found****
    switch(g);
    {
    case 0:return 0;
    //****found****
    case 1;case 2:return 1;
  }
  return(proc(g-1)+proc(g-2));
}
void main()
{
  long fib;int n;
  printf("Input n:");scanf("%d",&n);
  printf("n=%d\n",n);
  fib=proc(n);
  printf("fib=%d\n\n",fib);
}

选项

答案(1)错误:switch(g); 正确:switch(g) (2)错误:case 1;case 2;return 1; 正确:case 1;return 1;case2:return 1;

解析 由C语言的语法规则可知,switch语句后面是没有分号的,因此,“switch(g);”要把后面的分号去掉;在C语言中,case语句后面是冒号而不是分号,因此,“case 1;case 2:return 1;”应改为“case 1:return 1;case2:return 1;”。
转载请注明原文地址:https://kaotiyun.com/show/kXJp777K
0

最新回复(0)