如何在Python中使递归函数返回值而不是None?

时间:2018-10-19 09:47:24

标签: python

我有这个函数,一旦输入为“ x”,它应该返回1。如果第一个输入为“ y”,然后下一个输入为“ x”,为什么为什么返回None?

def func():
    a = input('x or y\n')
    if a == 'x':
        return 1
    else:
        func()

print(func())

这是在命令行中写的:

x or y 
y         # My input
x or y
x         # My input 
None

为什么它返回None而不是1?

2 个答案:

答案 0 :(得分:0)

函数始终在return语句旁边提供输出。您需要返回函数作为递归的输出。

def func():
    a = input('x or y\n')
    if a == 'x':
        return 1
    else:
        return func()

print(func())

将使您的函数递归。最好的问候...

答案 1 :(得分:0)

在else语句中,您正在调用该函数,但未从该函数返回。 因此,如果该函数进入else语句,则该函数不返回任何内容。

def func():
a = input('x or y\n')
if a == 'x':
    return 1
else:
    return func()

print(func())

这样写可以解决问题,因为您将从func返回计算出的值。而且该函数将始终返回某些内容,而与输入无关。