zoukankan      html  css  js  c++  java
  • 用一条SQL语句实现斐波那契数列

    求斐波那契数列: 1,1,2,3,5,8,13,21,....
    ---------------------------------------

    --实现方法
    declare @length int
    select @length=20 --数列长度

    --可以直接把下面语句中的@length换成数字就只剩一条语句了 :)

    ;with fn as
    (
    select 2 as idx,cast(1 as float) as f1,cast(1 as float) as f2
    union all
    select idx+1 as idx,f1+f2 as f1,f1 as f2 from fn where idx<@length
    )
    select 1 as idx,1 as f1
    union all
    select idx,f1 from fn
    OPTION(MAXRECURSION 0)

    -----------------------------------------

    OPTION(MAXRECURSION 0) --当指定MAXRECURSION为0时,递归层次无限制,100为系统的默认值

    -----------------------------------------
    公元1202年,意大利数学家斐波那契提出了一个智力题:第一个月买回一对小兔子,第二个月小兔长成大兔,第三个月生下一对小兔,小兔一个月后长成大兔,大兔每月都能生一对小兔,买兔养兔人家各月兔子的对数为
    1,1,2,3,5,8,13,21,.......
    谁能往下写得多,谁聪明,这个智力游戏当时十分流行,这个数列就称为斐波那契数列,后来,斐波那契给出了这个数列的递推公式:
    a1=1,a2=1,a(m+2)=a(m+1)+am,(m≥1,m∈Z)
    后来人们想找到数列的通项公式,但很久未成功,直到二百多年后,法国数学家比内终于得出了通项公式:
    an={[(√5+1)^n]/2-[(1-√5)^n]/2]}÷√5
    一个以正整数为项的数列通项竟是含无理数的复杂分式,令人称奇!
    这个通项的推导很复杂,这里无法叙述.
    斐波那契数列美妙无比,以它前项为分子,后项为分母的数列:
    2/3,3/5,5/8.8/13,......是黄金分割数0.618的分数表示
    斐波那契数列像黄金分割一样,用途十分广泛,它在科研,文学,艺术,体育,医学等许多方面都有广泛应用,千多年来,对它的研究一直热烈进行,并逐步发展.

  • 相关阅读:
    C#开源框架
    8 种 NoSQL 数据库系统对比
    安装补丁“此更新不适用于你的计算机”解决办法
    .net开源资料
    winform程序退出
    jquery.chained与jquery.chained.remote使用以及区别
    存储过程使用回滚
    C# Panel中绘图如何出现滚动条
    C#结构体的特点浅析
    如何用堆栈和循环结构代替递归调用--递归转换为非递归的10条军规
  • 原文地址:https://www.cnblogs.com/llbofchina/p/1755768.html
Copyright © 2011-2022 走看看