美文网首页iOS开发心得
Swift-斐波那契数列

Swift-斐波那契数列

作者: FlyElephant | 来源:发表于2016-06-11 23:12 被阅读222次

    斐波那契数列也被称之为黄金分割数列,费波那契数列由0和1开始,之后的费波那契系数就由之前的两数相加,
    0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233……
    算法实现起来也比较简单:
    <pre><code>`
    func fibonacci(n:NSInteger)->NSInteger{
    if n<=0 {
    return 0
    }
    if n==1 || n==2 {
    return 1
    }
    return fibonacci(n-1)+fibonacci(n-2)
    }

    for index in 0...13 {
    print("FlyELephant-第(index)项的值:(fibonacci(index))")
    }</code></pre> 上面的递归,如果设置为50就会感觉运行特别慢,所以斐波那契数列通过递归实现并不是特别好,还好可以循环来解决: <pre><code>
    //0、1、1、2、3、5、8、13、21、34
    func fibonacci(n:Int) -> Int {
    if n <= 0 {
    return 0
    }

        if n == 1 {
            return 1
        }
        
        var firstNum:Int = 0
        var secondNum:Int = 1
        var result:Int = 0
        for _ in 2...n {
            result = secondNum + firstNum
            firstNum = secondNum
            secondNum = result
        }
        return result
    }
    

    for index in 0...10 {
    print("第(index)项结果:(fbonacciLoop(index))")
    }`</code></pre>

    青蛙与台阶

    一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。青蛙跳上一个n级的台阶总共有多少种跳法,这是简单的斐波那契数列:
    <pre><code>`
    func jumpFloor(n:NSInteger)->NSInteger {
    if n<=0 {
    return 0
    }

    if n==1 {
        return 1
    }
    
    if n==2 {
        return 2
    }
    
    return jumpFloor(n-1)+jumpFloor(n-2)
    

    }

    for index in 1...10 {
    print("(index)级台阶的跳法:(jumpFloor(index))")
    }`</code></pre>

    上面的题目还有一个变通问题,一只青蛙一次可以跳上1级台阶,也可以跳上2 级……也可以跳上n 级,青蛙跳上一个n级的台阶总共有多少种跳法?

    简单的分析一下假设F(0)=1,那么
    F(1)=1
    F(2)=F(1)+F(0)
    F(3)=F(2)+F(1)+F(0)
    F(n-1)=F(n-2)+...+F(0)
    F(n)=F(n-1)+F(n-2)+..F(0)
    F(n)=2*F(n-1)
    代码实现:
    <pre><code>`
    func jumpLoopFloor(n:NSInteger)->NSInteger {
    if n<=0 {
    return 0
    }

    if n==1 {
        return 1
    }
    
    return 2*jumpLoopFloor(n-1)
    

    }

    for index in 1...10 {
    print("(index)级台阶跳法:(jumpLoopFloor(index))")
    }`</code></pre>

    相关文章

      网友评论

        本文标题:Swift-斐波那契数列

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