Fibonacci Sequence
问题描述
实现一个通用的斐波那契 < T > 接受一个数字 T 并返回它的对应斐波那契数列。
序列开始: 1,1,2,3,5,8,13,21,34,55,89,144,...
举例:
type Result1 = Fibonacci<3> // 2
type Result2 = Fibonacci<8> // 21
斐波那契公式为
F(n) = F(n-1) + F(n-2)
// ============= Test Cases =============
import type { Equal, Expect } from './test-utils'
type cases = [
Expect<Equal<Fibonacci<1>, 1>>,
Expect<Equal<Fibonacci<2>, 1>>,
Expect<Equal<Fibonacci<3>, 2>>,
Expect<Equal<Fibonacci<8>, 21>>
]
// ============= Your Code Here =============
// 答案
type Fibonacci<
T extends number,
CurrentIndex extends any[] = [1],
Prev extends any[] = [],
Current extends any[] = [1]
> = CurrentIndex['length'] extends T
? Current['length']
: Fibonacci<T, [...CurrentIndex, 1], Current, [...Prev, ...Current]>
不看答案完全没思路,唉,废了。
看看大佬的带思路版的答案。