Рекурсия в GO

НАВИГАЦИЯ ПО СТРАНИЦЕ

факториал Пример обхода дерева

Рекурсия — это техника, при которой функция вызывает саму себя.

Простой пример факториала

Факториал числа n (обозначается как n!) — это произведение всех положительных целых чисел от 1 до n. Рекурсивная функция для вычисления факториала может выглядеть следующим образом:

package main

import "fmt"

func factorial(n int) int {
    if n <= 1 {
        return 1
    }
    return n * factorial(n-1)
}

func main() {
    result := factorial(5)
    fmt.Println(result) // Вывод: 120
}

В этом примере factorial вызывает саму себя с уменьшением аргумента n до 1, и результаты перемножаются на каждом уровне вызова.

Пример обхода дерева

Рекурсия также может быть полезной для обхода структур данных, таких как деревья. Рассмотрим пример простого бинарного дерева и рекурсивной функции для его обхода:

package main

import "fmt"

type Node struct {
    Value       int
    Left, Right *Node
}

func traverseTree(node *Node) {
    if node == nil {
        return
    }

    traverseTree(node.Left)
    fmt.Println(node.Value)
    traverseTree(node.Right)
}

func main() {
    // Пример бинарного дерева
    root := &Node{Value: 1,
        Left:  &Node{Value: 2, Left: nil, Right: nil},
        Right: &Node{Value: 3, Left: nil, Right: nil},
    }

    traverseTree(root)
}

Этот код рекурсивно обходит бинарное дерево слева направо и выводит значения узлов.

При использовании рекурсии важно уделять внимание базовому случаю, чтобы избежать бесконечного выполнения.