-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c871b35
commit baa9e46
Showing
5 changed files
with
133 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package main | ||
|
||
import "fmt" | ||
|
||
//阶乘 | ||
// n! = | ||
// n = 0 n! = 1 | ||
// n >=1 n! = n * (n-1) * (n-2) *.....* 1 | ||
// f(n) = n! = n * f(n - 1) | ||
// 分治 => 大问题分解为多个相同的小问题 (小问题可以继续拆分,知道某一个可以解决的子问题) | ||
// 递归调用 = > 函数直接或者间接调用自己 (总有一个停止条件)--大部分可以转化为 for 循环 | ||
|
||
func f(n int64) int64 { | ||
if n == 0 { | ||
return 1 | ||
} | ||
return n * f(n-1) | ||
} | ||
|
||
func main() { | ||
fmt.Println(f(3)) | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package main | ||
|
||
// n 个盘子 star(开始) end(终点) temp(借助) | ||
// n start ->temp ->end | ||
// n-1 starr ->end ->temp | ||
// start -> end | ||
// n-1 temp -> start -> end | ||
// 终止条件 n=1 直接返回 | ||
|
||
func hnt(start, end, temp string, layer int) { | ||
|
||
} | ||
|
||
func main() { | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package main | ||
|
||
import "fmt" | ||
|
||
func test1(n int) { | ||
n = 1 | ||
//值类型是两个不同的地址中存储的值,所以不影响 | ||
} | ||
|
||
func test2(s []int) { | ||
fmt.Printf("%p\n", s) | ||
//打印出来后和 b 的值一致 | ||
s[0] = 1 | ||
//引用类型是两个不同变量存储的指向同一个地址的值,所以影响 | ||
} | ||
|
||
func main() { | ||
|
||
a := 0 | ||
b := make([]int, 10) | ||
test1(a) | ||
test2(b) | ||
//传递值类型参数,不会有影响 | ||
fmt.Println(a) | ||
//传递引用类型参数,函数内部赋值会有影响 | ||
fmt.Println(b) | ||
fmt.Printf("%p\n", b) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package main | ||
|
||
import ( | ||
"fmt" | ||
) | ||
|
||
func test3(flag bool) int { | ||
if flag { | ||
return 1 | ||
//函数中一旦碰到return 就不会往下执行逻辑代码了 | ||
} | ||
fmt.Println("return beforce") | ||
return 2 | ||
} | ||
|
||
func main() { | ||
fmt.Println(test3(true)) | ||
fmt.Println(test3(false)) | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package main | ||
|
||
import ( | ||
"fmt" | ||
) | ||
|
||
func main() { | ||
|
||
//值类型(存储值) | ||
//int float point 数组 结构体 | ||
//在内存中申请内存新的空间,将age的值拷贝到 tmpAge | ||
//修改 tmpAge 不影响 age | ||
//tmpAge 和 age 的在内存空间中存储的是值,所以不影响 | ||
//两个变量的地址是不一样的 | ||
age := 30 | ||
tmpAge := age | ||
tmpAge = 31 | ||
fmt.Println(age, tmpAge) | ||
fmt.Printf("%p %p\n", &age, &tmpAge) | ||
|
||
//引用类型(存储地址) | ||
//切片 映射 接口 | ||
//申请内存空间--存储地址【也就是指针】 | ||
//在内存中申请新的空间,将 user 的值拷贝到 tmpUser 中 | ||
//修改 tmpUser 中元素的值,是指针指向地址空间的值,但是指针没有变化 | ||
//修改任意指向空间地址的值,访问的目的不变【地址共享】,所以值会变 | ||
//两个变量的地址是一样的 | ||
user := make([]string, 10) | ||
tmpUser := user | ||
tmpUser[0] = "SS" | ||
fmt.Printf("%#v %#v \n", user, tmpUser) | ||
//打印变量的值--%p 打印值 | ||
fmt.Printf("%p %p\n\n\n\n", user, tmpUser) | ||
|
||
//指针--值类型--指针本身就是值,但是存在一个解引用操作,可以操作其他值 | ||
pointA := &age | ||
pointB := pointA | ||
//值操作 | ||
//pointB = &tmpAge | ||
//fmt.Printf("%#v %#v %#v %#v\n", pointA, pointB, *pointA, *pointB) | ||
|
||
//解引用操作 * 取指针指向地址的值----值相同 | ||
*pointA = 33 | ||
fmt.Printf("%#v %#v %#v %#v\n", pointA, pointB, *pointA, *pointB) | ||
|
||
} |