Go语言练习题

练习 6.4

重写本节中生成斐波那契数列的程序并返回两个命名返回值(详见第 6.2 节),即数列中的位置和对应的值,例如 5 与 4,89 与 10。

func fibonacci(n int) (index  int,value int ) {
	index = n
	if n <= 1 {
		value = 1
	} else {
		_,value0 := fibonacci(n-1)
		_,value1 := fibonacci(n-2)
		value = value0 + value1
	}
	return
}

  

练习 6.6

实现一个输出前 30 个整数的阶乘的程序。

n! 的阶乘定义为:n! = n * (n-1)!, 0! = 1,因此它非常适合使用递归函数来实现。

 

func iterCount(num int ,count *big.Int) *big.Int{
	if num<=1 || count.Int64() == 1{
		return big.NewInt(1)
	}else{
		return count.Mul(count,iterCount(num-1,big.NewInt(count.Int64()-1)))
	}
}

练习 6.8 在 main 函数中写一个用于打印 Hello World 字符串的匿名函数并赋值给变量 fv,然后调用该函数并打印变量 fv 的类型。

  
fv := func(){
fmt.Println("Hello world")
}
fv()
fmt.Println(reflect.TypeOf(fv))

练习 6.10

学习并理解以下程序的工作原理:https://github.com/unknwon/the-way-to-go_ZH_CN/blob/master/eBook/06.9.md

练习 7.4: fobinacci_funcarray.go: 为练习 7.3 写一个新的版本,主函数调用一个使用序列个数作为参数的函数,该函数返回一个大小为序列个数的 Fibonacci 切片。

func fibonacci(fibs []uint64,n int)  uint64  {
	if n<= 1{
		fibs[n]=1
	} else {
			fibs[n] = fibonacci(fibs,n-1) + fibonacci(fibs,n-2)
	}
	return fibs[n]
}

问题 7.3 给定 s := make([]byte, 5),len(s) 和 cap(s) 分别是多少?s = s[2:4],len(s) 和 cap(s) 又分别是多少?

  2 ;3

 

 

 

 

 https://github.com/unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md

今日总结

  今天主要学习了go的控制结构,函数,切片/数组,算是把几个总要的知识点过了一遍,然后把比较有意思的题目放上来做一个记录

posted @ 2019-11-12 21:16  杨归元  阅读(1889)  评论(0编辑  收藏  举报