0
我寫了一個函數來確定顯示的高度,給定一個寬度和格式。該函數遞歸運行,如果它在嘗試出一行高度值時找不到給定寬度和格式的匹配。如果函數在進入遞歸之前發現匹配,那麼該函數將起作用,但在此之後,它始終返回無,而不是匹配的值對。對於這是爲什麼我很困惑。我在這裏錯過了一些原則嗎?函數返回無遞歸
def getDisplayDimensions(width,FormatX,FormatY):
Format = float(FormatX)/FormatY
if FormatX < FormatY:
return "illegal format."
for height in range(1,int(width)+1):
if float(width)/height == float(Format):
return width,height
break
elif height == width:
getDisplayDimensions(float(width)-1,FormatX,FormatY)
# example call:
print getDisplayDimensions(801,16,9)
哦,謝謝。那麼在這裏的確對我有一個基本的缺乏理解...因爲,我不明白爲什麼這個調用需要返回語句,如果返回值在被調用的函數內。 – 2014-10-11 18:12:59
@ user3578468:想象在這個時候調用一個*不同的函數*;比如說你調用了'set([float(width)-1,FormatX,FormatY])'。如果你錯過了「回報」,你認爲會發生什麼?調用遞歸函數在這裏沒什麼不同,你仍然需要返回結果。 – 2014-10-11 20:00:19
我明白了,非常感謝。 – 2014-10-11 22:08:53