已知爬楼梯时每次可选择走1级或2级台阶,求到达第n级台阶的不同走法数,要求使用迭代递推实现以避免递归的重复计算与栈溢出问题,已知边界条件为$f(1)=1$、$f(2)=2$,递推式为$f(n)=f(n-1)+f(n-2)$。现有四个代码片段,请选出正确的实现。
def climb_stairs(n): return n
def climb_stairs(n): if n <= 2: return n else: return climb_stairs(n-1) + climb_stairs(n-2)
def climb_stairs(n): if n == 1: return 1 elif n == 2: return 2 a, b = 1, 2 for _ in range(3, n+1): c = a + b a = b b = c return b
def climb_stairs(n): res = 1 for i in range(1, n): res *= i return res