1:求一个水仙花数
//定义一个水仙花数列 n>99&&n<999
func JudgeNum(n int) int {
var g, s, b int
g = n % 10
b = n / 100
s = (n - b*100 - g) / 10
if g*g*g+b*b*b+s*s*s == n {
fmt.Println(n)
}
return 0
}
2:求一个斐波那契数列的总和
//求斐波那契数列的值
func Fb(n int) int64 {
if n <= 1 {
return 1
} else {
return Fb(n-2) + Fb(n-1)
}
}
3:全排
/// 全排 参1:数据源(使用数组切片作为参数) 如果指定元素数,那么就是使用数组做参数了 参2:元素开始的位置 参数3:结束位置(个数-1)
func Perm(list []string, k int, m int) {
m = len(list) - 1
if k == m {
for i := 0; i <= m; i++ {
fmt.Printf("%s", list[i])
}
fmt.Println("")
} else {
for i := k; i <= m; i++ {
list[k], list[i] = list[i], list[k]
Perm(list, k+1, m)
list[k], list[i] = list[i], list[k]
}
}
}
调用:
fmt.Println("全排开始-------------------")
var array = [5]string{"1", "2", "3", "4", "5"}
var slice = array[0:5]
//var list []string=make()
Perm(slice, 0, 4)
fmt.Println("全排结束-------------------")
4:map的应用
rating := map[string]float32{"C": 5, "Go": 4.5, "Python": 4.5, "C++": 2}
value, ok := rating["C++"]
if ok {
fmt.Println(value)
}
//------
var mymap map[string]int
mymap = map[string]int{"C++": 5, "C": 4, "C#": 3}
value2, ok2 := mymap["C++"]
if ok2 {
fmt.Println(value2)
}
//-----
numbers := make(map[string]int)
numbers["one"] = 1 //赋值
numbers["ten"] = 10 //赋值
numbers["three"] = 3
value3, ok3 := numbers["C++"]
if ok3 {
fmt.Println(value3)
} else {
fmt.Println(ok3)
}
//遍历
for key, v := range mymap {
fmt.Print(key)
fmt.Print(":")
fmt.Println(v)
}
5:数组元素对换位置(第一个和最后一个,第二个和倒数第二个....)
//数组对换位置
func px() {
a := []int{22, 3, 12, 34, 1, 92, 123}
var length = len(a)
var l int = length/2 + length%2
for i := 0; i < l; i++ {
a[length-i-1], a[i] = a[i], a[length-i-1]
}
for _, v := range a {
fmt.Println(v)
}
}