diff --git a/fibonacci.py b/fibonacci.py new file mode 100644 index 0000000..0130a41 --- /dev/null +++ b/fibonacci.py @@ -0,0 +1,37 @@ +def fibonacci(n: int) -> int: + """ + 使用迭代方式计算第 n 个斐波那契数 + + Args: + n: 要计算的斐波那契数的位置(从 0 开始) + + Returns: + 第 n 个斐波那契数 + """ + if n < 0: + raise ValueError("n 必须是非负整数") + + if n == 0: + return 0 + + if n == 1: + return 1 + + prev, curr = 0, 1 + for _ in range(2, n + 1): + prev, curr = curr, prev + curr + + return curr + + +if __name__ == "__main__": + # 测试代码 + print("斐波那契数列测试:") + for i in range(10): + print(f"F({i}) = {fibonacci(i)}") + + # 验证结果 + expected = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] + for i in range(10): + assert fibonacci(i) == expected[i], f"测试失败:F({i})" + print("\n所有测试通过!")