Go 斐波那契闭包
? ? 斐波那契數列,從第三個數字開始,每個數字都是前兩個數字的和。
? ? 所以,我們需要在fibonacci函數中定義三個變量x1,x2,sum。
? ? 而返回值使用閉包的方式,每次求和,扔掉x1的值,把x2的值賦值給x1,把sum的值賦值給x2,達到保存最新的斐波那契數字的目的。
? ?sum就是最終返回并打印的斐波那契數列的一個一個的值。
package mainimport "fmt"// fibonacci 函數會返回一個返回 int 的函數。 func fibonacci() func() int {x1, x2 := 0, 1sum := 0return func() int {sum = x1 + x2x1 = x2x2 = sumreturn sum} }func main() {f := fibonacci()for i := 0; i < 10; i++ {fmt.Print(f(),", ")}fmt.Println("...") }? ? 此例,因為斐波那契數字自身就具備循環的所有變量,因此,在打印語句中調用fibonacci()函數對應變量時無需給出輸入參數。
運行結果
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...?
參數:
https://www.yuque.com/docs/share/706cae53-50d9-4614-86ff-addf9f4c904a
總結
- 上一篇: ROS基础教程
- 下一篇: java 正则表达式 html,java