/ 算法

Closures:用 Swift 和 Go 一起写斐波拉契数

斐波拉契数是自然界一个神奇的数字,相传世间万物都遵循了这个规律。

今天在写 Go 的斐波拉契数的时候,突然想起来我很少会在 Swift 里用这种闭包当作返回值的形式,一般用法都是闭包当作了参数,于是写了个 Swift 版本,Just For Fun.

Go 语言版本

package main
import "fmt"

func nextNum() func() int {
    i,j := 1,1
    return func() int {
        var tmp = i+j
        i, j = j, tmp
        return tmp
    }
}

func main(){
    for i:=0; i<10; i++ {
        fmt.Println(nextNumFunc())
    }
}

Swift 语言版本

import UIKit

func nextNum() -> () -> Int {
    var (i, j)  = (1, 1)
    return { () -> Int in
        let tmp = i + j
        (i, j) = (j, tmp)
        return tmp
    }
}

let nextNumFunction = nextNum()
for _ in 0...10 {
    print(nextNumFunction())
}

相较之下,还是 Swift 的语法漂亮呀。

Closures:用 Swift 和 Go 一起写斐波拉契数
Share this