函数打印一个值但不返回任何值

时间:2018-04-10 06:13:23

标签: python recursion return-value return-type

此功能打印第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。

我是否遗漏了某些东西,或者是否有些东西我不了解打印与返回值之间的关系?

1 个答案:

答案 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