斐波那契数列(C#)

斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波那契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。

解题如下:

Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
           请输入n的值:<asp:TextBox runat="server" ID="sa"></asp:TextBox>
            <asp:Button runat="server"  ID="suit" Text="斐波那契数列" OnClick="suit_Click"/>
            结果:<asp:TextBox runat="server" ID="sa1"></asp:TextBox>
        </div>
    </form>
</body>
</html>

Default.aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void suit_Click(object sender, EventArgs e)
    {
        long m = Convert.ToInt64(sa.Text.Trim());
        sa1.Text=""+ Fibonacci(m)+"";
    } 
    //速度快
    public static long FbnqSort2(long num)
    {
        long ret = 0;
        long num1 = 1;
        long num2 = 1;
        if (num == 1 || num == 2)
        {
            ret = 1;
        }
        else if (num > 2)
        {

            for (int i = 0; i < num - 2; i++)
            {
                ret = num1 + num2;
                num1 = num2;
                num2 = ret;
            }
        }
        else
        {
            ret = 0;
        }
        return ret;
    }
    //速度极慢
    public static long fib(long n)
    {
        if (n == 1 || n == 2)
        {
            return 1;
        }
        else if (n > 2)
        {
            long a = fib(n - 1);
            long b = fib(n - 2);
            return a + b;
        }
        else
        {
            return 0;
        }
    }
    //速度快
    private static long F2(long number)
    {
        long a = 1, b = 1;
        if (number == 1 || number == 2)
        {
            return 1;
        }
        else if (number > 2)
        {
            for (int i = 3; i <= number; i++)
            {
                long c = a + b;
                b = a;
                a = c;
            }
            return a;
        }
        else
        {
            return 0;
        }
    }
    //速度快
    public static long Fibonacci(long n)
    {
        long f0 = 0;
        long f1 = 1;
        long f2 = 0;
        int t = 2;
        if (n < 0)
        {
            return 0;
        }
        else if (n == 0 || n == 1)
        {
            return n;
        }
        else
        {
            while (t <= n)
            {
                f2 = f0 + f1;
                f0 = f1;
                f1 = f2;
                t++;
            }
            return f2;
        }
    }
    //速度极慢
    public static long F1(long number)
    {
        if (number == 1 || number == 2)
        {
            return 1;
        }
        else if (number > 2)
        {
            return F1(number - 1) + F1(number - 2);
        }
        else
        {
            return 0;
        }
    }
}

运行结果:

posted @ 2019-04-22 10:55  天然白  阅读(1997)  评论(0编辑  收藏  举报