此功能打印第n个斐波纳契术语。
def fib_recur(n, _prev=0, _cur=1, _i=1):
if n <= 1: print(n)
elif _i <= n: fib_recur(n, _cur, _cur+_prev, _i+1)
else: print(_prev)
如果改为只返回第n个术语:
def fib_recur(n, _prev=0, _cur=1, _i=1):
if n <= 1: return n # <- this return does work
elif _i <= n: fib_recur(n, _cur, _cur+_prev, _i+1)
else: return _prev # <- this return does not
该函数打印一个值但返回None。
我是否遗漏了某些东西,或者是否有些东西我不了解打印与返回值之间的关系?
答案 0 :(得分:4)
你错过了elif条件中的return
def fib_recur(n, _prev=0, _cur=1, _i=1):
if n <= 1: return n
elif _i <= n: return fib_recur(n, _cur, _cur+_prev, _i+1) # missing return
else: return _prev