#3344. [GESP202312 五级 C++] 第 1 题

[GESP202312 五级 C++] 第 1 题

下面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;
    int nowVal = 0;
    for (int i = 2; i < N; i++)
    {
        nowVal = last1 + last2;
        last2 = last1;
        last1 = nowVal;
    }
    return nowVal;
}

{{ select(1) }}

  • fiboA() 用递归方式,fiboB() 循环方式
  • fiboA() 更加符合斐波那契数列的数学定义,直观易于理解,而 fiboB() 需要将数学定义转换为计算机程序实现
  • fiboA() 不仅仅更加符合数学定义,直观易于理解,且因代码量较少执行效率更高
  • fiboB() 虽然代码量有所增加,但其执行效率更高