Skip to content

Instantly share code, notes, and snippets.

@jtprogru
Last active May 14, 2022 19:08
Show Gist options
  • Save jtprogru/c3345e71e70abaf01a48e153908124bb to your computer and use it in GitHub Desktop.
Save jtprogru/c3345e71e70abaf01a48e153908124bb to your computer and use it in GitHub Desktop.
Дано натуральное число A > 1. Определите, каким по счету числом Фибоначчи оно является, то есть выведите такое число n, что φn=A. Если А не является числом Фибоначчи, выведите число -1. Вводится натуральное число. Выведите ответ на задачу.
package main
import (
"fmt"
)
func main() {
var n int
var listFib []int
_, _ = fmt.Scan(&n)
listFib = append(listFib, 0, 0)
var a, b int = 1, 1
for i := 0; i < n; i++ {
a, b = b, a+b
listFib = append(listFib, a)
}
k := check(listFib, n)
fmt.Println(k)
}
func check(nums []int, n int) int {
for k, v := range nums {
if v == n {
return k
}
}
return -1
}
@Warmbellycat
Copy link

Функция check не нужна, тебе достаточно следующее полученное число на 17 строке сравнивать с искомым и там брейкаться если равен или превысил
Тогда ты по памяти будешь за O(1), по времени O(n) (линия)

@Warmbellycat
Copy link

И даже если оставить функцию check - то зачем там возвращать bool? У тебя либо положительный индекс, либо -1
Ты все равно второе значение игноришь на 21 строке

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment