Назад к вопросам
JuniorТеорияИногда
Что выведет программа?
package main
import "fmt"
func count(n int) {
if n > 0 {
fmt.Print(n)
count(n - 1)
fmt.Print(n)
}
}
func main() { count(3) }321123
- Ждать
321: строка после рекурсивного вызова тоже выполняется, когда вызов вернётся, поэтому каждыйcountпечатаетnдважды. - Ждать
123321или321321: самый глубокий вызов завершается первым, поэтому вторые печати идут в обратном порядке: 1, 2, 3.
- Какую ошибку или панику вы получите, когда рекурсия в Go исчерпает стек?
- Чем растущий по требованию стек горутины отличается от фиксированного стека в C?