func Factorial(n uint64) (result uint64){
if (n > 0){
result = n * Factorial ( n - 1 )
retrun result
}
return 1
}
func main() {
var num int = 15
fmt.Printf("%d 的階乘是 %d\n",num,Factorial(uint64(num)))
}
2. GO 斐波那契額列數(shù)
func fibonacci(n int) int {
if n < 2 {
return n
}
return fibonacci(n - 2) + fibonacci(n - 1)
}
3. GO模擬雙色球搖號 隨機數(shù)產(chǎn)生7個號碼 不能重復
/**
遞歸方法
*/
//全部去重
func loop2(cp *[7]int) {
for i := 0; i < 7; i++ {
for j := 6; j >= 0; j-- {
if i == j {
continue
}
if j >= 5 {
if i < 5{
continue
}else {
if (*cp)[i] == (*cp)[j] {
(*cp)[j] = rand.Intn(12) + 1
loop2(cp)
}
}
} else if j < 5 {
if i >= 5 {
continue
}else {
if (*cp)[i] == (*cp)[j] {
(*cp)[j] = rand.Intn(35) + 1
loop2(cp)
}
}
}
}
}
return
}
func main() {
var cp [7]int
//設置隨機數(shù)種子
rand.Seed(time.Now().UnixNano())
// 設置前5位隨機數(shù)
for i := 0; i < 5; i++ {
cp[i] = rand.Intn(35) + 1
}
// 設置后2位隨機數(shù)
for i := 5; i < 7; i++ {
cp[i] = rand.Intn(12) + 1
}
fmt.Println(cp)
loop2(&cp)
fmt.Println(cp)
}
4. 通過遞歸實現(xiàn) 1+2+3...+100
// 方法一
func Test(num int) int {
if num == 1 {
return 1
}
return num + Test(num -1)
}
// 方法二 從給定的參數(shù)開始 + 到100
func Test2(num int) int {
if num == 100 {
return 100
}
return num + Test2(num + 1)
}