美文网首页
Go - 面试题--兔子问题(斐波那契数列)、约梭芬杀人法

Go - 面试题--兔子问题(斐波那契数列)、约梭芬杀人法

作者: 灵魂深灵 | 来源:发表于2019-07-25 13:52 被阅读0次

1.一对刚出生的小兔子,出生后第4个月起每个月都生一对兔子,等小兔子长到第四个月后每个月又可以生一对兔子,如果兔子都长生不死,请问每个月的兔子总数是多少?
2.约梭芬杀人法 把犯人围成一圈,每次从固定位置开始算起,杀掉第7个人,直到剩下最后一个。

//1 兔子问题(斐波那契数列)
func sum(month int) int {
    fmt.Println("sum:", month)
    if month < 4 {
        return 2
    } else if month <= 0 {
        return 0
    }
    return sum(month-1) + sum(month-3)
}

//2 约梭芬杀人法
func kill(people []int) []int {
    if len(people) == 1 {
        return people
    }else if len(people) < 7 {
        a := 7%len(people)-1
        arr1 := append(people[a+1:],people[0:a]...)
        return kill(arr1)
    }
    arr1 := append(people[7:],people[0:6]...)
    return kill(arr1)
}
func main() {
    //fmt.Println("LLL")
    //1
    fmt.Println(sum(7))

    //2
    num := 12
    var arr [12]int
    for i := 0;i<num;i++{
        arr[i] = i+1
    }
    arr1 := arr[0:num]
    fmt.Println(arr)
    fmt.Println(kill(arr1))
}

相关文章

网友评论

      本文标题:Go - 面试题--兔子问题(斐波那契数列)、约梭芬杀人法

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