下面C++代码用于求斐波那契数列,该数列第1、2项为1,以后各项均是前两项之和。下面有关说法错误的是( )。
int fiboA(int N){
if (N == 1 || N == 2)
return 1;
return fiboA(N - 1) + fiboA(N - 2);
}
int fiboB(int N){
if (N == 1 || N == 2)
return 1;
int last2 = 1, last1 = 1, nowVal = 0;
for (int i = 2; i < N; i++){
nowVal = last1 + last2;
last2 = last1;
last1 = nowVal;
}
return nowVal;
}
- A. fiboA( ) 用递归方式, fiboB() 循环方式
- B. fiboA( ) 更加符合斐波那契数列的数学定义,直观易于理解,而 fiboB() 需要将数学定义转换为计算机程序实现
- C. fiboA( ) 不仅仅更加符合数学定义,直观易于理解,且因代码量较少执行效率更高
- D. fiboB( ) 虽然代码量有所增加,但其执行效率更高
正确答案:C