--- id: 5900f3851000cf542c50fe98 title: 问题25:1000位斐波纳契数 challengeType: 5 videoUrl: '' dashedName: problem-25-1000-digit-fibonacci-number --- # --description-- Fibonacci序列由递归关系定义: F n = F n-1 - F n-2 ,其中F 1 = 1且F 2 = 1。 因此,前12个学期将是: F 1 = 1 F 2 = 1 F 3 = 2 F 4 = 3 F 5 = 5 F 6 = 8 F 7 = 13 F 8 = 21 F 9 = 34 F 10 = 55 F 11 = 89 F 12 = 144 第12个学期F 12 是第一个包含三位数的术语。 Fibonacci序列中包含`n个`数字的第一项的索引是多少? # --hints-- `digitFibonacci(5)`应该返回21。 ```js assert.strictEqual(digitFibonacci(5), 21); ``` `digitFibonacci(10)`应该返回45。 ```js assert.strictEqual(digitFibonacci(10), 45); ``` `digitFibonacci(15)`应该返回69。 ```js assert.strictEqual(digitFibonacci(15), 69); ``` `digitFibonacci(20)`应该返回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++; } }; ```