Nikita
не, какие-то упражнения в го сильно сложные
Oleg
Хз:)
Nikita
я просто уточню, не нужно же быть математически подкованным, чтоб пользоваться го?
Oleg
Nikita
ну в js мне норм
Nikita
я могу на нем в один прекрасный день написать бэк для рест апи?
Aslan
Nikita
не могу понять, почему функция хоть и получает в аргументы структуру, все равно ее не может изменить?
Nikita
type Vertex struct {
X, Y float64
}
func (v Vertex) Abs() float64 {
return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
func (v Vertex) Scale(f float64) {
v.X = v.X * f
v.Y = v.Y * f
}
func main() {
v := Vertex{3, 4}
v.Scale(10)
fmt.Println(v.Abs())
}
Oleg
Oleg
С js пришел человек :)
Nikita
а без ссылки?
Nikita
почему функция обязательно должна принимать ссылку, чтоб обработать значение? Я же значение на прямую передаю
Nikita
или вы хотите мне сказать, что то что попадает в функцию это уже копия ?
Oleg
Это принято назвать указателем :) Без указателя нельзя изменять значение так, чтобы оно поменялось у вызывателя
Oleg
Nikita
я так привык, что все автоматом становится ссылкой.
Oleg
ты фибоначи так и не посчитал?)
Nikita
нет
Nikita
я не знаю как это сделать
Nikita
я не слишком умен для такого, еще полгода назад я верстал и jq плагины подключал, потом я стал фронтом и начал на vue спа приложения пилить.
Oleg
Nikita
а я не в печали)
Nikita
хотя, если дадите подсказку, то было бы прикольно и я бы попробовал бы ее решить
Oleg
func fib(number int) int {
if number == 0 || number == 1 {
return number
}
return fib(number-2) + fib(number-1)
}
Oleg
:D
Oleg
Это рекурсивно же :)
Oleg
Проходили
Oleg
Мы то в вузе мб и проходили)
Oleg
но откуда мы знаем какой он там js-кодер?)
Oleg
и то кстати я встрял в рекурсии тогда, и вообще плавал на всех алгоритмах
Oleg
ам) ну да)
Nikita
я же такое же решение выдал на js, но задача состоит не передавая значений вычислить фибоначчи
Nikita
Nikita
жесть
Oleg
Oleg
а еще 1 вариант считает в big.Int, но я его не покажу тк там код авно;D
Oleg
Или скорее фи^n
Nikita
func fibonacci() func() int {
var number1 = 10
var number2 = 10
return func() int {
number1 -= 1
number2 -= 2
result := number1 + number2
return result;
}
}
наверно трабла в том, что я даже не понимаю, что это должно считать
Mike
че за пиздос
Mike
при чем тут фиббоначи
Mike
почему оно функцию возвращает
Mike
втф
Nikita
Реализуйте функцию fibonacci, которая возвращает функцию (замыкание), которая возвращает последовательные числа Фибоначчи (0, 1, 1, 2, 3, 5, ...).
Mike
func fib() func() int {
cache := []int{1, 1}
cur := 0
return func() int {
if cur > len(cache) {
appen(cache, cache[cur-1] + cache[cur-2]
}
cur ++
return cache[cur-1]
}
}
Mike
пример
Oleg
Mike
ты еще за О(1) по формуле предложил бы
Mike
)
Oleg
Mikalai
Nikita
Mike
ну такое, если взять достаточно большой флоат и округлить просто потом, мне кажется до достаточно больших чисел все совпадать будет
Nikita
что за странное условие? cur > len(cache) ?
Mike
ну типа что мы еще не вычислили
Mike
нужный
Oleg
Mike
первые два раза на самом деле только будет скипать иф
Mike
потом будет каждый раз в него заходить
Oleg
Mike
так что можешь сделать if (cur > 2)
Nikita
ну я его вставил, он не заработал
Oleg
Там в append ошибка :)
Nikita
не, я попытался исправить синтаксические
Oleg
😄
Nikita
func fibonacci() func() int {
cache := []int{1, 1}
cur := 0
return func() int {
if cur > 2 {
cache = append(cache, cache[cur-1] + cache[cur-2])
}
cur ++
return cache[cur-1]
}
}
Anonymous
Ф = ((√5+1)/2)
⌊Ф^N / √5 - (1-Ф)^N / √5⌉
Mike
пошучено
Mike
опоздал
Mike