Todos conhecemos a famosa sequência de Fibonacci , que começa com 0
e 1
, e cada elemento é a soma dos dois anteriores. Aqui estão os primeiros termos (OEIS A000045 ):
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584
Dado um número inteiro positivo , retorne o número mais próximo da sequência de Fibonacci, sob estas regras:
O número de Fibonacci mais próximo é definido como o número de Fibonacci com a menor diferença absoluta com o número inteiro especificado. Por exemplo,
34
é o número de Fibonacci mais próximo de30
, porque|34 - 30| = 4
, que é menor que o segundo mais próximo21
, para o qual|21 - 30| = 9
.Se o número inteiro pertencer à sequência de Fibonacci, o número mais próximo de Fibonacci será exatamente ele mesmo. Por exemplo, o número mais próximo de Fibonacci
13
é exatamente13
.Em caso de empate, você pode optar por gerar um dos números de Fibonacci mais próximos da entrada ou apenas gerar os dois. Por exemplo, se a entrada for
17
, todos os seguintes são válidos:21
,13
ou21, 13
. Caso você devolva os dois, mencione o formato.
Aplicam-se lacunas padrão . Você pode receber e fornecer saída através de qualquer método padrão . Seu programa / função deve lidar apenas com valores até 10 8 .
Casos de teste
Entrada -> Saída 1 -> 1 3 -> 3 4 -> 3 ou 5 ou 3, 5 6 -> 5 7 -> 8 11 -> 13 17 -> 13 ou 21 ou 13, 21 63 -> 55 101 -> 89 377 -> 377 467 -> 377 500 -> 610 1399 -> 1597
Pontuação
Isso é código-golfe , então o código mais curto em bytes em todos os idiomas vence!
n
Número inteiro positivo implica n ≥ 1
.