import { add } from './add.ts'

export function fibonacci(n: number): number {
  if (n < 2) {
    return n
  }
  return add(fibonacci(n - 1), fibonacci(n - 2))
}

if (import.meta.vitest) {
  const { it, expect } = import.meta.vitest
  it('fibonacci', () => {
    expect(fibonacci(0)).toBe(0)
    expect(fibonacci(1)).toBe(1)
    expect(fibonacci(2)).toBe(1)
    expect(fibonacci(3)).toBe(2)
    expect(fibonacci(4)).toBe(3)
    expect(fibonacci(5)).toBe(5)
    expect(fibonacci(6)).toBe(8)
    expect(fibonacci(7)).toBe(13)
    expect(fibonacci(8)).toBe(21)
    expect(fibonacci(9)).toMatchInlineSnapshot('34')
  })
}
