0
주어진 폭과 형식으로 디스플레이의 높이를 결정하는 함수를 작성했습니다. 이 함수는 높이 값의 행을 시도하면서 주어진 너비와 형식에 일치하는 항목을 찾을 수 없으면 재귀 적으로 작동합니다. 이 함수는 재귀에 들어가기 전에 일치하는 항목을 찾으면 작동하지만 그 이후에는 항상 일치하는 값 쌍이 아닌 none을 반환합니다. 왜 그런지 나는 혼란 스럽다. 여기에 어떤 원리가 빠져 있습니까?재귀 후 함수가 없음을 반환합니다.
elif height == width:
getDisplayDimensions(float(width)-1,FormatX,FormatY)
이 return
추가 :
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])'라고 말한 것입니다. '귀환 '을 놓친 경우 어떻게 될 것이라고 생각하십니까? 재귀 함수를 호출하는 것은 다르지 않지만 여전히 결과를 반환해야합니다. –
고마워요. –