【C语言实现求斐波那契数列的第n位】

简介: 【C语言实现求斐波那契数列的第n位】

斐波那契数列------从第三项开始,每一项都等于前两项之和;而第一项和第二项都是1

1.非递归方法实现

主函数部分,定义变量,初始化变量,输入想求斐波那契数列的第n位 n

int main()
  {
    int n, c, i;
    n = c = i = 0;
    printf("请输入:\n");                
    scanf("%d", &n);
    int a = 1;
    int b = 1;

将a和b初始化成1,即为斐波那契数列的第一位和第二位,然后将a+b赋给c,即为从第三项开始,每一项都等于前两项之和;每次相加完赋值之后,将b的值赋给a,c的值赋给b,迭代下去;从第二位斐波那契数开始,每迭代一次就能得到下一位的斐波那契数,所以想求第n位的斐波那契数,就应该迭代n-2次.

1 1 2 3 5 8 13 21 34 55 …

a b c

if (n > 2)
    {
      for (i = 0; i < n - 2; i++)
      {
        c = a + b;                                               
        a = b;                                                     
        b = c;
      }
      printf("%d\n", c);
    }
    else
      printf("%d\n", a);
    return 0;
  }

使用非递归的方法计算斐波那契数列的第n位,效率会快很多,但当数值过大时无法计算出准确值.

2. 递归方法实现

当n>2时,使用递归返回斐波那契数的前一位和前两位的和;当n<=2返回1.

int Fib(int n)
  {
    if (n > 2)
      return Fib(n - 1) + Fib(n - 2);           
    else
      return 1;
  }
  int main()
  {
    int n = 0;
    printf("请输入:\n");
    scanf("%d", &n);
    int ret = Fib(n);
    printf("ret = %d\n",ret);
    return 0;
  }

当使用递归算斐波那契数列的第n位时,n较大时,计算量非常大,效率低,会算得慢.

目录
相关文章
|
7月前
|
算法 C语言
斐波那契数列C语言版划重点,小白必看
斐波那契数列C语言版划重点,小白必看
|
7月前
|
存储 C语言
C语言输出斐波那契数列
C语言输出斐波那契数列
63 0
|
2月前
|
算法 C语言
【C语言】斐波那契数列细讲
【C语言】斐波那契数列细讲
|
6月前
|
存储 C语言
C语言实现斐波那契数列
C语言实现斐波那契数列
|
6月前
|
机器学习/深度学习 C语言
斐波那契数列(用c语言探索黄金分割之美)
斐波那契数列(用c语言探索黄金分割之美)
79 0
|
7月前
|
算法 搜索推荐 程序员
C语言第三十一练——递归求解n位斐波那契数列
C语言第三十一练——递归求解n位斐波那契数列
50 0
C语言二十三弹---求第N项斐波那契数列的值
C语言二十三弹---求第N项斐波那契数列的值
|
C语言
C 语言实例 - 斐波那契数列
C 语言实例 - 斐波那契数列。
74 0
|
C语言
斐波那契数列【C语言实现】
斐波那契数列【C语言实现】
268 4
|
C语言
C语言题:用数组来求斐波那契数列问题前20项
用数组来求fibonacci数列问题:
177 0