더북(TheBook)

ex를 계산하기 위해 우리는 앞에서 구현한 for 루프를 다른 for 루프 안에 넣는다.

term = 1.0
total = 0.0
n = 1
while total != total + term:
    total += term
    term = 1.0
    for i in range(1, n+1):
        term *= x / i
    n += 1

while 루프의 실행 횟수는 다음 항과 누적된 합계의 상대적인 값에 달려있다. total이 더 이상 변하지 않으면 루프를 종료한다. (term > 0을 종료 조건으로 사용하는 것보다 이 전략이 더 효율적이다. term > 0 조건을 사용하면 total 값을 변경시키지 못하는 사소한 루프를 아주 많이 반복하기 때문이다) 이 코드는 효율적이지만, 내부 for 루프가 외부 for 루프의 이전 반복에서 계산했던 값을 전부 다시 계산하는 부분은 비효율적이다. 다음과 같이 이전 루프 반복 시에 계산한 항을 이용하면 while 루프 하나로 문제를 해결할 수 있다.

term = 1.0
total = 0.0
n = 1
while total != total + term:
    total += term
    term *= x/n
    n += 1
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.