// 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 = xn1 + xn2 8n > 2。
編寫一個函數,接受int 值,並給出這個值獲得的斐波那契數列。*/
_termfibonacci
fmtPrintfterm
}
fmtPrintln
/*Q12. (4) Map function map() 函數是一個接受一個函數和一個列表做爲參數的函數。函數
應用於列表中的每一個元素,而一個新的包含有計算結果的列表被返回。所以:
map(f(); (a1; a2; : : : ; an1; an)) = (f(a1); f(a2); : : : ; f(an1); 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
}