递归就是在运行的过程中调用自己
func recursion(){
recursion()
}函数调用自身
func main(){
recursin()
}
go语言支持递归,但在使用递归时,开发者需要设置退出条件,否则递归将陷入无线循环,递归函数对于解决数学上的问题是非常有用的,就像阶乘,斐波那契等
package main
import "fmt"
func Factorial(n uint64) (result uint64) {
if n > 0 {
result = n * Factorial(n-1)
return result
}
return 1
}
func main() {
var i int = 15
fmt.Printf("%d的阶乘是%d\n", i, Factorial(uint64(i)))
}
package main
import "fmt"
func fibonacci(n int) int {
if n < 2 {
return n
}
return fibonacci(n-2) + fibonacci(n-1)
}
func main() {
var i int
for i = 0; i < 10; i++ {
fmt.Printf("%d\t", fibonacci(i))
}
}
递归可以优雅的解决很多问题,例如注明的快速排序算法就是通过递归实现的,递归函数在使用时有可能遇到栈溢出的问题,当大量的递归调用导致的程序栈内存分派耗尽就会产生栈溢出,
内置函数,是不需要导入操作的就可以直接使用的函数,他们有些可以根据不同类型操作,有些用于系统及的操作,panic,都需要直接获得编译器的支持。
close 用于管道通信
len用于返回某个类型的长度或者数量
cap 容量的意思
new make均用于分配内存,不过new用于值类型和用于定义的类型,make用于内置引用类型。他们的用法就像是函数,
copy append用于复制和连接切片
panci recover两者均用于错误处理机制
print println底层打印函数
complex real image 用于创建和操作复数