美文网首页
golang学习笔记之递归

golang学习笔记之递归

作者: Eternal丶星空 | 来源:发表于2019-04-04 12:22 被阅读0次
package main

import (
    "fmt"
)

type iAdder func(int) (int, iAdder)

func adder2(base int) iAdder {
    return func(v int) (int, iAdder) {
        return base + v, adder2(base + v)
    }
}

func main() {
    a:=adder2(0)
    for i:=0;i<10;i++{
        var s int
        s, a=a(i)
        fmt.Printf("%T\n",a)
        fmt.Println(s)
    }
}

// i = 0
// s,a=a(0) 
// s,a = 0+0, adder2(0,0)      -> 0,adder2(0) 即 base = 0

// i = 1
// s,a=a(1)
// s,a = 0+1,adder2(1)        -> 1,adder2(1) 即 base=1

// i = 2
// s,a=a(2)
// s,a = 1+2, adder2(3)        -> 3,adder2(3) 即 base=3

// i = 3
// s,a=a(3)
// s,a = 3+3, adder2(6)        -> 6,adder2(6) 即 base=6

// ...
// 以此类推
// 最终可以得到

// i = 9
// s,a=a(9)
// s,a = 36+9, adder2(45)       ->45,adder2(45) 即 base=45 

相关文章

网友评论

      本文标题:golang学习笔记之递归

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