Введение
Этот лаба проверит ваше понимание рекурсивных функций в Golang.
This tutorial is from open-source community. Access the source code
💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал
Этот лаба проверит ваше понимание рекурсивных функций в Golang.
Функция sum
принимает срез целых чисел и возвращает сумму всех целых чисел в срезе. Однако, функция неполная и требует реализации с использованием рекурсии.
sum
должна быть реализована с использованием рекурсии.$ go run recursion.go
5040
13
Ниже представлен полный код:
// Go поддерживает
// <a href="https://en.wikipedia.org/wiki/Recursion_(computer_science)"><em>рекурсивные функции</em></a>.
// Вот классический пример.
package main
import "fmt"
// Эта функция `fact` вызывает сама себя, пока не достигнет
// базового случая `fact(0)`.
func fact(n int) int {
if n == 0 {
return 1
}
return n * fact(n-1)
}
func main() {
fmt.Println(fact(7))
// Заключения также могут быть рекурсивными, но для этого
// замыкание должно быть объявлено с явно заданным
// типизированным `var` перед его определением.
var fib func(n int) int
fib = func(n int) int {
if n < 2 {
return n
}
// Поскольку `fib` было ранее объявлено в `main`, Go
// знает, какую функцию вызвать при использовании `fib` здесь.
return fib(n-1) + fib(n-2)
}
fmt.Println(fib(7))
}
В этом лабе вам предстояло реализовать функцию sum
с использованием рекурсии. Рекурсия - это мощный инструмент, который позволяет упростить сложные задачи, разбивая их на более мелкие подзадачи. Завершив этот лаба, вы должны теперь иметь лучше понимание того, как использовать рекурсию в Golang.