美文网首页
二、算法——07、斐波那契序列

二、算法——07、斐波那契序列

作者: GameObjectLgy | 来源:发表于2024-01-04 20:05 被阅读0次
一、递归法

最容易想到的就是办法,但是这个算法是不够好的。时间复杂度比较高,主要是因为有很多数是重复计算的。

二、直接法

递归是从后面往前推,而直接法是从前面往后面推,每次算得一个结果后,把结果暂存起来,得到了两个新的基值,然后使用新的基值,进一步推出后面的值。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ShuLie
{
    class Program
    {
        static void Main(string[] args)
        {
            //注意这里要从1开始,表示的是第一位
            for (int i = 1; i < 2000; i++)
            {
                if(DiGui(i) != ZhiJieFa(i))
                    Console.WriteLine("结果不不正确");
                else
                    Console.WriteLine("结果正确");

                Console.ReadLine();
            }
        }

        //算法复杂度2的n次方。Number代表的是第几位。
        static int DiGui(int number)
        {
            if (number == 1 || number == 2)
            {
                return 1;
            }
            else
            {
                return DiGui(number - 1) + DiGui(number - 2);
            }
        }

        //从头开始到尾,直接法。算法复杂度O(n)
        static int ZhiJieFa(int number)
        {
            int a = 1, b = 1;
            if (number == 1 || number == 2)
            {
                return 1;
            }
            else
            {
                for (int i = 3; i < number; i++)
                {
                    //1、算出前面两个相加的值
                    int temp = a + b;
                    //2、b本来是temp后两位的值。这时候需要往前移1位。
                    b = a;
                    //3、a本来是temp后一位的值。这时需要往前移1位。
                    a = temp;
                }
                return a;
            }
        }
    }
}

结果输出正确

相关文章

网友评论

      本文标题:二、算法——07、斐波那契序列

      本文链接:https://www.haomeiwen.com/subject/huebndtx.html