Files
freeCodeCamp/curriculum/challenges/italian/10-coding-interview-prep/project-euler/problem-25-1000-digit-fibonacci-number.md
2022-02-19 16:26:08 +09:00

86 lines
1.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: 5900f3851000cf542c50fe98
title: 'Problema 25: numero di Fibonacci a 1000 cifre'
challengeType: 5
forumTopicId: 301897
dashedName: problem-25-1000-digit-fibonacci-number
---
# --description--
La sequenza di Fibonacci è definita dalla relazione ricorsiva:
<div style='padding-left: 4em;'>F<sub>n</sub> = F<sub>n1</sub> + F<sub>n2</sub>, dove F<sub>1</sub> = 1 e F<sub>2</sub> = 1.</div>
Quindi i primi 12 termini saranno:
<div style='padding-left: 4em; display: inline-grid; grid-template-rows: auto; row-gap: 7px;'><div>F<sub>1</sub> = 1</div><div>F<sub>2</sub> = 1</div><div>F<sub>3</sub> = 2</div><div>F<sub>4</sub> = 3</div><div>F<sub>5</sub> = 5</div><div>F<sub>6</sub> = 8</div><div>F<sub>7</sub> = 13</div><div>F<sub>8</sub> = 21</div><div>F<sub>9</sub> = 34</div><div>F<sub>10</sub> = 55</div><div>F<sub>11</sub> = 89</div><div>F<sub>12</sub> = 144</div></div>
Il dodicesimo termine, F<sub>12</sub>, è il primo termine a contenere tre cifre.
Qual è l'indice del primo termine nella sequenza di Fibonacci contenente `n` cifre?
# --hints--
`digitFibonacci(5)` dovrebbe restituire un numero.
```js
assert(typeof digitFibonacci(5) === 'number');
```
`digitFibonacci(5)` dovrebbe restituire 21.
```js
assert.strictEqual(digitFibonacci(5), 21);
```
`digitFibonacci(10)` dovrebbe restituire 45.
```js
assert.strictEqual(digitFibonacci(10), 45);
```
`digitFibonacci(15)` dovrebbe restituire 69.
```js
assert.strictEqual(digitFibonacci(15), 69);
```
`digitFibonacci(20)` dovrebbe restituire 93.
```js
assert.strictEqual(digitFibonacci(20), 93);
```
# --seed--
## --seed-contents--
```js
function digitFibonacci(n) {
return n;
}
digitFibonacci(20);
```
# --solutions--
```js
const digitFibonacci = (n) => {
const digits = (num) => {
return num.toString().length;
};
let f1 = 1;
let f2 = 1;
let index = 3;
while (true) {
let fn = f1 + f2;
if (digits(fn) === n) return index;
[f1, f2] = [f2, fn];
index++;
}
};
```