Go 기초 3. 함수
함수
프로그램에서의 함수는 기능들은 모아노은 것이다.
func 함수명(input)
~~~
~~~
return
함수의 기능
모듈화: 반복작업을 하지 않게끔 해준다.
분리: 함수를 호출하는 쪽과 함수의 내용을 분리 시켜준다.
ex)
package main
import "fmt"
func add(x int, y int) int {
return x + y
} // add 라는 함수를 만들어 정수인 x,y 값을 인자로 받아 x+y를 수행해 돌려주고 그값은 정수가 된다.
func main() {
for i := 0; i < 10; i++ {
fmt.Printf("%d + %d = %d\n", i, i+2, add(i, i+2)) // add()로 함수를 호출 하고 괄호안에 각각의 인자를 복사해서 넣어 준다.
}
}
--------------------------
0 + 2 = 2
1 + 3 = 4
2 + 4 = 6
3 + 5 = 8
4 + 6 = 10
5 + 7 = 12
6 + 8 = 14
7 + 9 = 16
8 + 10 = 18
9 + 11 = 20
재귀호출
recursive call 함수안에서 같은 함수를 호출한다.
무한히 호출 되는 함수이기 때문에 탈출하는 명령어가 반드시 필요하다.
ex1)
package main
import "fmt"
func main() {
f1(10)
}
func f1(x int) {
if x == 0 {
return // 반복되는걸 빠져나오게 해줌
}
fmt.Println(x)
f1(x - 1) // 함수안에서 또 함수를 호출하여 반복하게 만듦
}
---------------------------
10
9
8
7
6
5
4
3
2
1
ex2)
package main
import "fmt"
func main() {
f1(10)
}
func f1(x int) {
if x == 0 {
return
}
fmt.Printf("f1(%d) before call f1(%d)\n", x, x-1)
f1(x - 1)
fmt.Printf("f1(%d) after call f1(%d)\n", x, x-1)
}
-------------------------------
f1(10) before call f1(9)
f1(9) before call f1(8)
f1(8) before call f1(7)
f1(7) before call f1(6)
f1(5) before call f1(4)
f1(4) before call f1(3)
f1(3) before call f1(2)
f1(2) before call f1(1)
f1(1) before call f1(0)
f1(1) after call f1(0)
f1(2) after call f1(1)
f1(3) after call f1(2)
f1(4) after call f1(3)
f1(5) after call f1(4)
f1(6) after call f1(5)
f1(7) after call f1(6)
f1(8) after call f1(7)
f1(9) after call f1(8)
f1(10) after call f1(9)
ex3) 1부터 10까지의 합계
package main
import "fmt"
func main() {
s := sum(10, 0)
fmt.Println(s)
}
func sum(x int, s int) int {
if x == 0 {
return s
}
s += x
return sum(x-1, s)
}
-------------------------------
55
재귀호출과 반복문
재귀호출과 반복문은 비슷하지만 상황에 따라 각 각 편한 상황이 있다.
수학 정의를 구현할때는 재귀호출
그 외 는 반복문이 편하다
ex)피보나치 수열
package main
import "fmt"
func main() {
rst := f(10)
fmt.Println(rst)
}
func f(x int) int {
if x == 0 {
return 1
}
if x == 1 {
return 1
}
return f(x-1) + f(x-2)
}
------------------------------
89
Author And Source
이 문제에 관하여(Go 기초 3. 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jinzza456/go-언어-기초-강좌-3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)