非递归输出小于等于n的项
def fib(n): a,b=1,1 while a < n: print(a,end=' ') a,b=b,a+b
递归输出小于等于n的项
def fib(n, a=1, b=1): if a > n: return
print(a,end=' ') fib(n, b, a+b)
递归输出前n项
def fib3(n, a=1, b=1): n -= 1
if n < 0: return
print(a, end=' ') fib3(n, b, a+b)
# 返回前n项 def fib(x): def inner(n, res, a=1, b=1): n -= 1 if n < 0: return res res.append(a) return inner(n, res, b, a+b) return inner(x, []) f = fib(5) print(f) # 返回小于n的项 def fib2(n): def inner(nu, res, a=1, b=1): if a > nu: return res res.append(a) return inner(nu, res, b, a + b) return inner(n, [])
def fib(n, flag=0): def fib1(n, a=1, b=1): if a > n: return print(a,end=' ') fib1(n, b, a+b) def fib2(n, a=1, b=1): n -= 1 if n < 0: return print(a, end=' ') fib2(n, b, a+b) if not flag: fib1(n) else: fib2(n)