Учебники

Go — рекурсия

Рекурсия — это процесс повторения предметов самоподобным способом. Та же концепция применима и к языкам программирования. Если программа позволяет вызывать функцию внутри той же самой функции, то это называется рекурсивным вызовом функции. Взгляните на следующий пример —

func recursion() {
   recursion() /* function calls itself */
}
func main() {
   recursion()
}

Язык программирования Go поддерживает рекурсию. То есть это позволяет функции вызывать себя. Но при использовании рекурсии программистам нужно быть осторожными, чтобы определить условие выхода из функции, иначе оно станет бесконечным циклом.

Примеры рекурсии в го

Рекурсивные функции очень полезны для решения многих математических задач, таких как вычисление факториала числа, генерация ряда Фибоначчи и т. Д.

Пример 1: Расчет факториала с использованием рекурсии в Go

В следующем примере вычисляется факториал данного числа с использованием рекурсивной функции —

Live Demo

package main

import "fmt"

func factorial(i int)int {
   if(i <= 1) {
      return 1
   }
   return i * factorial(i - 1)
}
func main() { 
   var i int = 15
   fmt.Printf("Factorial of %d is %d", i, factorial(i))
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

Factorial of 15 is 2004310016

Пример 2: ряд Фибоначчи с использованием рекурсии в го

В следующем примере показано, как сгенерировать ряд Фибоначчи для заданного числа с помощью рекурсивной функции —

Live Demo

package main

import "fmt"

func fibonaci(i int) (ret int) {
   if i == 0 {
      return 0
   }
   if i == 1 {
      return 1
   }
   return fibonaci(i-1) + fibonaci(i-2)
}
func main() {
   var i int
   for i = 0; i < 10; i++ {
      fmt.Printf("%d ", fibonaci(i))
   }
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —