Я написал функцию для определения высоты дисплея с учетом ширины и формата. Функция работает рекурсивно, если она не может найти соответствие для заданной ширины и формата при опробовании строки значений высоты. Функция работает, если она находит совпадение перед входом в рекурсию, но после этого она всегда возвращает ни одного, а не пару совпадающих значений. Я очень смущен, почему это так. У меня отсутствует какой-то принцип здесь?Функция возвращает None после рекурсии
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)
Ой, спасибо. Тогда действительно существует фундаментальное отсутствие понимания для меня здесь ... Потому что, я не понимаю, почему для вызова нужен оператор return, если возврат находится в вызываемой функции. –
@ user3578468: представьте себе * другую функцию * в этой точке; скажем, вы назвали 'set ([float (width) -1, FormatX, FormatY]) вместо этого. Как вы думаете, что произойдет, если вы пропустили «возвращение»? Вызов рекурсивной функции здесь ничем не отличается, вам все равно нужно вернуть результат. –
Я вижу, спасибо большое. –