查看完整版本 : Python程式設計一問

電梯自我的豬豬 2019-4-22 10:11

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))
print(is_even(1))




點解print(is_odd(1))最後係True

點解print(is_even(1))最後係false

第一,is_odd(1):

(is_odd(1))去左一次not is_even(1)然後返返去is_odd(x-1)度減左1

跟住變左0去到not is_even度,本來係0係True,not將佢變返False

第二,is_even(1):

佢唔係0,一開始已經去is_odd(x-1)度減左1,變0,去返not is_even,本來係0,係True,not將佢變返False




咁點解,print(is_odd(1))係True,print(is_even(1))係False,唔係應該兩個一樣咩?

鄉貢仁 2019-4-22 11:30

[url=https://pymotw.com/2/trace/][u]追蹤[/u][/url]

[[i] 本帖最後由 鄉貢仁 於 2019-4-28 03:32 PM 編輯 [/i]]

fx360bx 2019-4-22 12:43

print(is_odd(1))
is_odd(1)
not is_even(1)
not is_odd(1-1)
not not is_even(0)
not not True

print(is_even(1)) 就 not 少一次,所以 False,[color=#ff0000]唔明點解你要重新計多次,即使你計錯左 is_odd(1),但擺明佢同 is_even(1) 既分別就係一個 not operator,又點可能一樣[/color]?

[[i] 本帖最後由 fx360bx 於 2019-4-22 12:59 PM 編輯 [/i]]

電梯自我的豬豬 2019-4-23 08:53

[quote]原帖由 [i]fx360bx[/i] 於 2019-4-22 12:43 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=498170386&ptid=28172614][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
print(is_odd(1))
is_odd(1)
not is_even(1)
not is_odd(1-1)
not not is_even(0)
not not True

print(is_even(1)) 就 not 少一次,所以 False,唔明點解你要重新計多次,即使你計錯左 is_odd(1),但擺明佢同 is_even(1) 既分別就係一個 not operato ... [/quote]

原來is_even(1)已經not第一次,並且一路累積,明喇,唔該巴打
頁: [1]
查看完整版本: Python程式設計一問