Todos conhecemos a famosa sequência de Fibonacci , que começa com 0e 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,13ou21, 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.