본문 바로가기

내일배움 캠프/TIL

2023 03 24 재귀 함수를 이용해서 복리 구하기

이용한 공식

이 공식을 이용해서 주어진 값으로 복리를 계산하는 코드를 재귀함수를 이용해서 짜려고한다

 

첫시도..

def compound(p,r,n,t):
    if t == 2:
        return p*(1+r/n)**(n*t)
    else:
        return compound(p,r,n,t-1)*(1+r/n)**(n*t)

print(compound(1500000, 0.043, 4, 6))

결과값 : 3528509.243796015
정답: 1938836.8221341053

무식하게 박아본코드... 당연히 제곱이 무식하게 늘어나기때문에 실패를 했다

 

두번째 시도

def compound(p,r,t,n):
    if t == 1:
        return p*(1+r/n)**n
    else:
        return compound(p,r,t-1,n)*(1+r/n)**n

n*t의 제곱을 해야하는거니까 n을 t만큼 제곱하면되는게 아닐까?

라는 생각으로 코드를 짜봤다

 

여기에는 안적었지만 처음할때에는 t와 n의 순서를 다르게했기 때문에

다른 결과가 나왔었는데 그거를 해결하니까 정답이 제대로 나왔다

 

 

그리고 나서 답안을 봐보니까

def compound_interest_amount(p, r, t, n):
    if t * n == 1:
        return p * (1 + r / n)
    elif t * n > 1:
        return compound_interest_amount(p, r, t - 1 / n, n) * (1 + r / n)

답안은 이런 코드를 이용했다 t-1n을 줘서 t*n을 이용해서

t*n==1 이됬을때  기존 t*n값만큼 도는 코드인데

처음에는 이렇게 짜고싶었는데 너무 생각이 안나서 바꾼거였는데

이런 코드를 보니까 조금더 생각을 해볼걸 했나 라는 생각이 든다...