斐波拉契数列

Posted lllyclh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了斐波拉契数列相关的知识,希望对你有一定的参考价值。

古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

 

先写出来前几个月的兔子数,分别是1、1、2、3、5、8、13、21、34......

就是这样一组数列,第三个数是前两个数的和,也就是n=(n-1)+(n-2)

 

 

#include<iostream>
using namespace std;
int main()

    int m[23];//定义一个数组,把每个月兔子数放入
    m[0] = m[1] = 1;//第一个月和第二个月都是一只兔子
    for (int i = 0; i < 23; i++)
    
        if (i == 0 || i == 1)
        
            cout << "1" << endl;//第一个月和第二个月输出1
        
        else
        
            m[i] = m[i - 1] + m[i - 2];
            cout << m[i] << endl;//其他月份都是上两个月的和
        
    
    return 0;

 

或者用另一种方法

#include<iostream>
using namespace std;
int fun(int m)

    if (m == 1 || m == 2)
        return 1;
    else
        return fun(m - 1) + fun(m - 2);

int main()

    return 0;

迭代

假如输入一个数n 

fun(n)=fun(n-1)+fun(n-2)

fun(n-1)=fun(n-3)+fun(n-2)

fun(n-2)=fun(n-3)+fun(n-4)

.........

一直会到fun(3)=fun(1)+fun(2)=2

但是这个只能输出特定月份的兔子数

斐波拉契数列的代码书写和分析

什么是斐波拉契数列?

  斐波拉契数列是指一个数列,其前两位等于1,第i位等于第i+1位于第i+2位相加。(1 1 2 3 5 8 13 ···)

斐波拉契数列实现代码的分析。

  用户输入一个长度值,然后得到该长度的斐波拉契数列。要想实现这个功能,我们可以分成三个模块去书写代码:

      1.获取用户输入的长度,保存到变量n中。

      2.创建长度为n的数组,依次保存每一位数字。

      3.遍历输出数组内容。

  这样的话,我们只需要实现每个模块的功能,整个代码就能编写完成。

代码的编写

 

          //模块1
            Console.Write("请输入一个斐波拉契数列的长度:");
            int n = int.Parse(Console.ReadLine());
          //模块2、3
            int[] numbers = new int[n];
            for (int i = 0; i < numbers.Length; i++)
            {
                if (i <= 1)
                {
                    numbers[i] = 1;
                }
                else {
                    numbers[i] = numbers[i - 1] + numbers[i - 2];
                }
                Console.Write(numbers[i] + " ");
            }
            Console.ReadLine();

 

以上是关于斐波拉契数列的主要内容,如果未能解决你的问题,请参考以下文章

斐波拉契数列的代码书写和分析

斐波拉契数列应用

关于斐波拉契数列所引伸出来的问题

C语言中斐波拉契数列算法

深入剖析斐波拉契数列

斐波拉契数列