Not Solving: RecursionError: максимальная глубина рекурсии превышена по сравнению - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь рассчитать общие резервные фонды, но с моим кодом возникли сбои, может кто-нибудь мне помочь, пожалуйста.

amt=int(input("Enter Current total in GPF fund\n"))
dud=int(input("Enter Amount Duduction per month for Fund\n"))
d=dud
n=int(input("Enter No. of years you want to calculate\n"))
def cal_cirint(amt,dud):
    amt=amt+(dud*12)
    amt=amt+(amt*0.08)
    am=amt
    if n==1:
        return amt
    if n>1:
      for i in range (2,n):
        a=cal_cirint(am,d)
      return amt
    if n==0:
        return False
print(cal_cirint(amt,dud))

1 Ответ

0 голосов
/ 01 ноября 2019

Нет условия завершения для вашей рекурсивной функции. Вам нужно передать годы в качестве параметра функции и заменить все эти if n условия переменными годами.

что-то вроде этого

amt=int(input("Enter Current total in GPF fund\n"))
dud=int(input("Enter Amount Duduction per month for Fund\n"))
d=dud
n=int(input("Enter No. of years you want to calculate\n"))
def cal_cirint(amt,dud,year):
    print(f"amt: {amt} dud: {dud} year: {year}")
    amt=amt+(dud*12)
    amt=amt+(amt*0.08)
    if year==1:
        return amt

    if year>1:
        amt += cal_cirint(amt,dud,year-1)
        return amt
    if year==0:
        return 0

print(cal_cirint(amt,dud,n))

И результат выглядит как

Enter Current total in GPF fund
100
Enter Amount Duduction per month for Fund
10
Enter No. of years you want to calculate
3
amt: 100 dud: 10 year: 3
amt: 237.6 dud: 10 year: 2
amt: 386.208 dud: 10 year: 1
1170.51264

Надеюсь, вы поняли логику. Должно быть завершающее условие, в противном случае рекурсивная функция будет работать снова, пока стек не переполнится.

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