golang之递归

翠花,上代码

package main

import (
    "fmt"
    "time"
)

/*
递归原则,一个大问题分解成相似的小问题
定义好出口条件,否则死循环
*/
func calc(n int) int {
    if n == 1 {
        return 1
    }
    return calc(n-1) * n
}

func recusive(n int) {
    fmt.Println("你好呀")
    time.Sleep(time.Second)
    if n > 10 {
        return
    }
    recusive(n + 1)
}
func factor(n int) int {
    if n == 1 {
        return 1
    }
    return factor(n-1) * n
}

//斐波那
func fab(n int) int {
    if n <= 1 {
        return 1
    }
    return fab(n-1) + fab(n-2)
}

func main() {
    //fmt.Println(factor(5))
    //recusive(0)
    for i := 0; i < 10; i++ {
        fmt.Println(fab(i))
    }
}

 

posted @ 2017-12-30 17:30  py鱼  阅读(1088)  评论(0编辑  收藏  举报
点我回主页