阅读以下说明和C函数代码,回答问题并将解答写在对应栏内。 【说明】 著名的菲波那契数列定义式为 f1=1 f2=1 fn=fn-1+fn-2 (n=3,4,…) 因此,从第1项开始的该数列为1,1,2,3,5,8,13,

admin2009-09-20  32

问题 阅读以下说明和C函数代码,回答问题并将解答写在对应栏内。
【说明】
   著名的菲波那契数列定义式为
   f1=1    f2=1    fn=fn-1+fn-2    (n=3,4,…)
   因此,从第1项开始的该数列为1,1,2,3,5,8,13,21,…。函数fibl和fib2分别用递归方式和迭代方式求解菲波那契数列的第n项(调用fib1、fib2时可确保参数n获得一个正整数)。
【C函数代码】
          

选项

答案(1) return fib1(n-1)+fib1(n-2);或return(fib1(n-1)+fib1(n-2)); (2) long f=1;或long f=(long)1;或long f=1L;

解析 函数fib1不能通过编译,原因在于语句“fib1(n)=fib1(n-1)+fib1(n-2)”出错,该语句中fib1(n)、fib1(n-1)、fib1(n-2)都是函数调用,由于fib1是返回长整型数据的函数,所以不能为函数调用fib1(n)赋值。该语句处应将fib1(n-1)+fib1(n-2)的值作为返回值,形式为“return  fib1(n-1)+fib1(n-2)”。
   在函数fib2中,for语句从i等于3开始循环,用于计算菲波那契数列第3项及以后各项的值。对于n等于1或2,for语句的循环体并不执行,因此对于第1、2项数列值,最后返回的f值是不确定的,为f赋初值1即可纠正该错误。
转载请注明原文地址:https://kaotiyun.com/show/DIjZ777K
0

最新回复(0)