所以让我们按步骤分解。
def is_even(x):
if x == 0:
return True
else:
return is_odd(x-1)
def is_odd(x):
return not is_even(x)
print(is_odd(1))
1) we say print -> is_odd(1). So we're sending a 1 to is_odd() function
2) is_odd() recieves the 1 and before it can return a value, it must call is_even() and send that same 1.
3) is_even() now recieves that 1 and checks if its equal to zero, but it fails, so it then has to call is_odd() and send it 1 - 1.
4) is_odd checks the new value (zero in this case) and calls again is_even() sending that zero
5) is_even() now resovles at the if x == 0: line and returns True.
6) Now we've reached the end of the recursive loop and all the functions will resolve with their return statments. Starting with the is_even() being True.
这是一个细分 - >
print(is_odd(1)) ->
print(NOT is_even(1))->
print(NOT is_odd(1-1)) ->
print(NOT NOT is_even(0)) ->
print(is_even(0)) ->
print(True) ->
True