메뉴

문서정보

예제로 살펴보는 Go : Recursion

Go는 재귀함수(Recursive functions)를 지원한다. 아래는 고전적인 factorial 예제코드다.
package main	

import "fmt"

func fact(n int) int {
    if n == 0 {
        return 1
    }
    return n * fact(n-1)
}

func main() {
    fmt.Println(fact(5))
}
		
fact 함수는 fact(0)이 호출 될 때까지 자기 자신을 계속 호출한다.

연습 문제

아래 코드는 slice의 원소를 뒤집는 일을 한다.
package main

import "fmt"

func main() {
    a := []int{1, 2, 3, 4}
    tmp := 0
    for i:=0; i < len(a)/2; i++ {
        tmp = a[i]
        a[i] = a[len(a)-(i+1)]
        a[len(a)-(i+1)] = tmp
    }
    fmt.Println(a)
}
		
  1. 슬라이스 크기의 1/2 만큼을 루프를 돌면서, 앞의 원소와 뒤의 원소를 서로 뒤바꾸는 식으로 작동한다.
  2. 재귀 함수를 이용해서 같은 일을 하는 코드를 만들라.
package main

import "fmt"

func main() {
}
		

다음 예제 : Pointer