求支持负数参数的第n项斐波那契数计算函数实现方案
负数参数斐波那契函数实现方案
负数索引的斐波那契(也叫Negafibonacci)序列满足公式:F(-n) = (-1)^(n+1) * F(n),你可以基于现有正n的实现直接扩展,不用修改原有迭代逻辑。
完整实现代码
const fib = n => { // 处理负数情况,先取绝对值计算 const isNegative = n < 0; const absN = Math.abs(n); let prev = 0, next = 1; for(let i = 0; i < absN; i++){ next = prev + next; prev = next - prev; } // 负数参数按照Negafibonacci规则调整返回值 return isNegative ? ((-1) ** (absN + 1)) * prev : prev; }
逻辑说明
- 首先判断入参是否为负数,同时取入参的绝对值用于原有迭代逻辑计算
- 沿用你原来的迭代逻辑计算绝对值对应的正索引斐波那契值,保证原有正n场景的逻辑和性能完全不变
- 若入参为负数,按照Negafibonacci的数学公式对结果做符号调整即可
测试验证
你可以用以下用例验证正确性:
fib(0)返回 0fib(1)返回 1fib(5)返回 5fib(-1)返回 1fib(-2)返回 -1fib(-5)返回 5
内容的提问来源于stack exchange,提问作者Marta
相关产品推荐
相关产品推荐

