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的控制結構,函數,切片/數組,算是把幾個總要的知識點過了一遍,然后把比較有意思的題目放上來做一個記錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM