НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
Golang. Уроки для початківців

En

Go Функції рекурсії


Функції рекурсії

Go приймає функції рекурсії. Функція є рекурсивною, якщо вона викликає сама себе та досягає умови зупинки.

У наступному прикладі testcount() є функцією, яка викликає сама себе. Ми використовуємо змінну x як дані, яка збільшується на 1 (x + 1) кожного разу, коли ми виконуємо рекурсію. Рекурсія завершується, коли змінна x дорівнює 11 (x == 11).

Приклад

package main
import ("fmt")

func testcount(x int) int {
  if x == 11 {
    return 0
  }
  fmt.Println(x)
  return testcount(x + 1)
}

func main(){
  testcount(1)
}

Результат:

1
2
3
4
5
6
7
8
9
10
Спробуйте самі »

Рекурсія — поширена математична та програмна концепція. Перевагою цього є те, що ви можете переглядати дані, щоб отримати результат.

Розробнику слід бути обережним із рекурсійними функціями, оскільки може бути досить легко скотитися до написання функції, яка ніколи не закінчується, або такої, яка використовує надлишок пам’яті чи потужності процесора. Однак, правильно написана рекурсія може бути дуже ефективним і математично елегантним підходом до програмування.

У наступному прикладі factorial_recursion() є функцією, яка викликає сама себе. Ми використовуємо змінну x як дані, які зменшуються (-1) кожного разу, коли ми виконуємо рекурсію. Рекурсія завершується, коли умова не перевищує 0 (тобто коли вона дорівнює 0).

Приклад

package main
import ("fmt")

func factorial_recursion(x float64) (y float64) {
  if x > 0 {
     y = x * factorial_recursion(x-1)
  } else {
     y = 1
  }
  return
}

func main() {
  fmt.Println(factorial_recursion(4))
}

Результат:

24
Спробуйте самі »

Розробнику-початківцю може знадобитися деякий час, щоб зрозуміти, як саме це працює, найкращий спосіб це дізнатися — протестувати та змінити це.