美文网首页
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