Вопрос заключается в том, чтобы найти фиксированную сумму, которую нужно заплатить, чтобы компании кредитных карт, когда -касается не изменяя значения из N
- BAL = сумма, которую вы должны заплатить в начале 0-й месяц
- N = это ежемесячная фиксированная сумма, подлежащая платному компании кредитной карты таким образом, что в конце года вы заплатили общее количество до
- Int = процентной ставки кредитной карточки компании
bal = int(raw_input("Enter balance"))
rate = int(raw_input("enter rate"))
lower_b = bal/12
upper_b = (bal + ((rate*bal)/1200))/12
N= (lower_b+upper_b)/2
def Credit(bal,rate,N):
global upper_b
global lower_b
i=1
k=bal
while (i<13):
print(N)
paid = N
bal = bal - paid
print("Balance remains to be paid is %s" %(round(bal,2)))
Interest = rate * bal /1200
print("The interest added on is %s" %(round(Interest,2)))
bal=bal+Interest
print ("The amount that needs to be payed is %s " %(round(bal,2)))
i=i+1
if bal==0:
return N
elif 50 < bal < 2000 :
lower_b = N
upper_b = upper_b
N = (upper_b +lower_b)/2
return Credit(k,rate,N)
elif -2000<bal< -50:
upper_b = N
lower_b = lower_b
N = (lower_b +upper_b)/2
return Credit(k,rate,N)
elif -50 < bal < 50:
return N
else:
return bal
result=Credit(bal,rate,N)
print(result)
Мой код никогда не заканчивается. Проблема в том, что значение N, определенное в коде, не меняется. Он остается фиксированным N = upper_b + lower_b)/2
Это не является хорошим примером использования рекурсии –
Уходя @PadraicCunningham комментарий, я бы не использовать рекурсию, а не использовать глобальные переменные. Я думаю, что это то место, где вы спотыкаетесь. Возьмите вход пользователя и отправьте его функции. Вы можете в конечном итоге использовать функцию обертки, но иногда это проще, чем рекурсия с глобалями. –