C语言二十三弹---求第N项斐波那契数列的值

简介: C语言二十三弹---求第N项斐波那契数列的值

C语言求第N项斐波那契数列的值

定义:斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89…自然中的斐波那契数列,这个数列从第3项开始,每一项都等于前两项之和。

思路:从定义中可知 斐波那契数列是每一项等于前两项之和,需要注意的就是 数列的第1、2项为1。

方法一:递归法

注意:使用递归要记住设置开始条件,并使得随着递归的深入逐渐靠近结束条件(其实就是开始条件)。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int Fib(int n)
{
  if (n < 3)
  {
    return 1;
  }
  else
  {
    return Fib(n - 1) + Fib(n - 2);
  }
}
int main()
{
  int n = 0;
  scanf("%d", &n);
    int ret = Fib(n);
    printf("%d\n", ret);
  return 0;
}

方法二:非递归法

思路:使用变量接收前两项之和 再使用前两项分别接收 前两项之和和第二项的值。主要 1 2 项为1。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int Fib(int n)
{
  int tmp = 0;
  int a = 1;
  int b = 1;
  if (n < 3)
  {
    return 1;
  }
  while (n > 2)
  {
    tmp = a + b;
    a = b;//必须a先接收b 不然会导致b中值被覆盖
    b = tmp;
    n--;
  }
  return tmp;
}
int main()
{
  int n = 0;
  scanf("%d", &n);
  int ret = Fib(n);
  printf("%d\n", ret);
  return  0;
}


相关文章
|
2天前
|
算法 C语言
斐波那契数列C语言版划重点,小白必看
斐波那契数列C语言版划重点,小白必看
|
7月前
|
C语言
【C语言实现求斐波那契数列的第n位】
【C语言实现求斐波那契数列的第n位】
48 0
|
2天前
|
C语言
每天一道C语言编程(3):有规律的数列输出
每天一道C语言编程(3):有规律的数列输出
11 0
|
2天前
|
C语言
斐波那契数列(C语言)
斐波那契数列(C语言)
斐波那契数列(C语言)
|
2天前
|
算法 搜索推荐 程序员
C语言第三十一练——递归求解n位斐波那契数列
C语言第三十一练——递归求解n位斐波那契数列
25 0
|
2天前
|
算法 C语言
C语言汉诺塔数列(循环版,递归版)
C语言汉诺塔数列(循环版,递归版)
37 0
|
5月前
|
C语言
C语言二十四弹--喝汽水问题
C语言二十四弹--喝汽水问题
|
5月前
|
C语言
C语言二十二弹--有序数组合并
C语言二十二弹--有序数组合并
|
5月前
|
C语言
C语言二十一弹 --打印空心正方形
C语言二十一弹 --打印空心正方形
|
11月前
|
C语言
斐波那契数列【C语言实现】
斐波那契数列【C语言实现】
215 4