C#求斐波那契数列第30项的值(递归和非递归)

2018-06-17 22:29:29来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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

namespace 斐波那契数列求和
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("第30项的值是:{0}", Fn(30));
            Console.WriteLine("第30项的值是:{0}", Fnl(30));
            Console.WriteLine("第30项的值是:{0}", Fn2(30));
            Console.ReadKey();
        }
        //递归算法
        static int Fn(int n)
        {
            if (n <= 0)
                return 0;
            if (n == 1 || n == 2)
                return 1;
            return Fn(n - 1) + Fn(n - 2);
        }
        //一般实现
        static int Fnl(int n)
        {
            if (n <= 0)
                return 0;
            int a = 1;
            int b = 1;
            int c = 1;
            for (int i = 3; i <= n; i++)
            {
                c = checked(a + b);
                a = b;
                b = c;
            }
            return c;
        }
        //两个临时变量进行计算
        static int Fn2(int n)
        {
            if (n <= 0)
                return 0;
            int a = 1;
            int b = 1;
            for (int i = 3; i <= n; i++)
            {
                b = checked(a + b);
                a = b - a;
            }
            return b;
        }
    }
}
View Code

算法方面的时间复杂度问题,自己了解一点,知道怎么算,但还是觉得掌握的不够好,不能充分去评估一个算法的效率。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Firebug中调试中的js脚本中中文内容显示为乱码

下一篇:签名有元程序集 Signed Friend Assemblies