C++实现斐波那契数列计算过程

裴波那契数列

  • C++实现斐波那契数列计算过程
    • 一、裴波那契数原理:
    • 二、图形表示:
    • 三、代码实现:

C++实现斐波那契数列计算过程

这个实现太绕弯子了,不太好

一、裴波那契数原理:

  1. f(0)=f(1)=1;
  2. 在n大于等于2时:
    f(n)=f(n-2)+f(n-1)  )

二、图形表示:

为了方便理解我做了下面这个表格,以详细表示计算过程中数值的传递关系。
C++实现斐波那契数列计算过程_第1张图片
约定如下:

  1. 表中每一行都表示一次计算;
  2. 初始状态:f(0)=f=1,f(1)=g=1;
  3. 黄色代表计算结果f(n);
  4. 下面这两个曲线代表数值传递,先蓝后红;
    在这里插入图片描述

开始计算

  1. 蓝色曲线:通过一个临时变量将本行的g保存,再传递给下一行的f;
  2. 计算f(2):f(2)=f+g =1+1=2
  3. 红色曲线:直接将f(2)传递给下一行的g;
  4. 以下循环…

三、代码实现:

// An highlighted block
    int Fib(int n) 
    {
        if(n <= 0)
            return 0;
        
        int f=0, g=1;
        int tmp=0;	//上图蓝色曲线所使用的临时变量
        while(--n)
        {
            tmp = g;	//临时存储本次的g
            g = f+g;	//计算f(n),并传递给下一行的g
            f = tmp;	//将保存的g传递给f,用以下次计算
        }
        return g;
    }

如果哪里说得不清楚请在下面评论。谢谢!

你可能感兴趣的:(算法)