+ 1
Python recursive function - can anyone explain me this code in detail
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(17)) print(is_even(23))
4 Respuestas
+ 1
this is the biggest eyesore of a function i've ever seen.
to explain it in detail let's take a smaller number like 5:
is_even(5):
is 5 equal to 0? no
so, is_odd(4) gets called
is_odd(4) returns !(is_even(4))
is_even(4):
is 4 equal to 0? no
so, is_odd(3) gets called
is_odd(3) returns !(is_even(3))
is_even(3):
is 3 equal to 0? no
so, is_odd(2) gets called
is_odd(2) returns !(is_even(2))
is_even(2):
is 2 equal to 0? no
so, is_odd(1) gets called
is_odd(1) returns !(is_even(1))
is_even(1):
is 1 equal to 0? no
so, is_odd(0) gets called
is_odd(0) returns !(is_even(0))
is_even(0):
is 0 equal to 0? yes
is_even(0) returns true
is_odd(0) returns false (negation of is_even(0))
is_even(1) then returns the result of is_odd(0) (which is false)
is_odd(1) returns true
is_even(2) returns true (same like is_even 1)
is_odd(2) returns false
is_even(3) returns false
is_odd(3) returns true
is_even(4) returns true
is_odd(4) returns false
and finally
is_even(5) returns false, therefore concluding 5 is not even
+ 1
Gagan Lohar well there's a condition that if it's 0 it returns true, and thus the odd one is a negation of it, returning false
0
Thank you for replying.....i really appreciate for your detailed answer....
but still i didn’t get the point that how even values returning true from 1st function and odd values returning false from 1st function
0
thank you so much hinanawi