Куда я не так с этой функцией Python? - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть эта функция python, где я создаю аннуитет, значение которого удваивается каждые 2 года.Я попытался два подхода, первый рекурсивный, однако я получаю ошибку m

максимальная глубина рекурсии превышена по сравнению или что тип None

(когда язапустите функцию как annu (10000, 40,0.1045)

def annu(MNY, n, i):
    k=MNY/i 
    c=((1+i)**(n-1))-1 
    FV=k*c
    FV1=0 
    FV2=0
    for y in range(1, n):
        if (y%2)==1:
            FV1=annu(MNY,(n),i)
            print('FV1 is', FV1)
            return round(FV1,3)
        else:
            FV2=2*FV1
            print('FV2 is', FV2)
            return round(FV2,2)
        FV=FV1+FV2
        inv_bal=FV
        return round(inv_bal,1)

Второй не использует рекурсию, однако это дает мне неправильный ответ:

def inp(PMT, n,i):
    balance=0
    FV1=0
    FV2=0

    k=PMT/i

    c=((1+i)**n)-1

    FV=k*c

    for j in range(0,n):


        if j%2==1:
            FV_1=2*((FV)*(1+i)**(n-1))
            interest=balance*i

            balance=balance+interest + PMT

            FV1=FV1+balance
            print('FV1 is', FV1)
        else:
            FV2=2*((FV1)*(1+i)**(n-1))
            interest=balance*i

            balance=balance+interest + PMT

            FV2=FV2+balance
            print('FV2 is', FV2)
            return FV2
        FV=FV1+FV2
        print('inv_bal', FV)
        inv_bal=FV
        return round(FV,2)

Я ожидаюответ около 4 * 10 ** 9, если я запустил его как annu (10000,40,0.1045)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...