// proctice3.2 project main.go
main
import (
"fmt"
)
func main() {
//Q10. (5) 变参 1. 编写函数接受整数类型变参,并且每行打印一个数字
printthem
printthem
fmtPrintln
/*Q11. (5) 斐波那契1. 斐波那契数列以:1; 1; 2; 3; 5; 8; 13; : : :
开始。或者用数学形式表达:x1 =1; x2 = 1; xn = xn?1 + xn?2 8n > 2。
编写一个函数,接受int 值,并给出这个值得到的斐波那契数列。*/
_termfibonacci
fmtPrintfterm
}
fmtPrintln
/*Q12. (4) Map function map() 函数是一个接受一个函数和一个列表作为参数的函数。函数
应用于列表中的每个元素,而一个新的包含有计算结果的列表被返回。因此:
map(f(); (a1; a2; : : : ; an?1; an)) = (f(a1); f(a2); : : : ; f(an?1); f(an))
1. 编写Go 中的简单的map() 函数。它能工作于操作整数的函数就可以了。
2. 扩展代码使其工作于字符串列表。*/
m
fi
ii
}
fmtPrintfMapfm
fmtPrintln
/*Q13. (3) 最小值和最大值
1. 编写一个函数,计算int slice ([]int) 中的最大值。
2. 编写一个函数,计算int slice ([]int) 中的最小值。*/
x
fmtPrintfmaxx
fmtPrintfminx
/*Q14. (5) 冒泡排序 1. 编写一个针对int 类型的slice 冒泡排序的函数。冒泡排序并不是最有效率的,对于n 个元素它的算法复杂度是O(n2)。快速排
序[27] 是更好的排序算法。*/
n
fmtPrintfn
bubblesortn
fmtPrintfn
/*Q15. (6) 函数返回一个函数
1. 编写一个函数返回另一个函数,返回的函数的作用是对一个整数+2。函数的名称叫
做plusTwo。然后可以像下面这样使用:
p := plusTwo()
fmt.Printf("%v\n", p(2))
应该打印4。参阅第36 页的第回调节了解更多关于这个的内容。
2. 使1 中的函数更加通用化,创建一个plusX(x) 函数,返回一个函数用于对整数加
上x。*/
p1plusTwo
fmtPrintfp1
//使用闭包
p2
p3plusXp2
fmtPrintfp3
}
numbers
_dnumbers
fmtPrintfd
}
}
value
xvalue
xx
nnvaluen
xnxnxn
}
x
}
fl
jl
kvl
jkfv
}
j
}
lmax
maxl
_vl
vmax
maxv
}
}
return
}
lmin
minl
_vl
vmin
minv
}
}
return
}
n
iini
jijnj
njni
ninjnjni
}
}
}
}
func plusTwo() func(int) int {
xx
}
X
x
yxy
}