2017-07-07 6 views
0

以下の再帰関数のすべての月に支払われた利子の合計を取得するにはどうすればよいですか?これは、クレジットカードの支払いをシミュレートする必要があります。あなたはそれぞれの呼び出しから戻るよう再帰関数の合計を得る方法

def creditcard_interest(balance,months,monthly_interest_rate=2.95/100): 
    if months==1: 
     return print("The new balance= ",balance) 
    else: 
     min_monthly_payment=balance*0.05 
     balance=balance-min_monthly_payment 
     interest=balance*monthly_interest_rate 
     print("Min_monthly_payment for month "+str(months)+'= ', min_monthly_payment) 
     print("Unpaid balance for month "+str(months)+'= ',balance) 
     print("Calculated interest for month "+str(months)+'= ',interest) 

     return creditcard_interest((balance+interest),months-1,) 
+2

'return print(...)'を実行しないでください。代わりに '返品残高 'を返します。 – zwer

答えて

-1

が興味を蓄積:

ところで
return interest + creditcard_interest((balance+interest), months-1,) 

、あなたの最初の文は違法です:あなたはprint文を返すことができません。あなたはそれで何をしようとしていますか?あなたの2つの支店のセマンティクスを見てください。最初のものは残高に関連するものを返す一方、もう一方は金利を返します。

私はあなたがする必要があると思うのは、printの残高です、そして、return興味があります。何かの変更、

print ("Total interest paid", creditcard_interest(1000, 12)) 

利回り

Min_monthly_payment for month 12= 50.0 
Unpaid balance for month 12= 950.0 
Calculated interest for month 12= 29.500000000000004 
Min_monthly_payment for month 11= 48.975 
Unpaid balance for month 11= 930.525 
Calculated interest for month 11= 28.89525 
Min_monthly_payment for month 10= 47.9710125 
Unpaid balance for month 10= 911.4492375 
Calculated interest for month 10= 28.302897375 
Min_monthly_payment for month 9= 46.98760674375001 
Unpaid balance for month 9= 892.76452813125 
Calculated interest for month 9= 27.722687978812502 
Min_monthly_payment for month 8= 46.02436080550313 
Unpaid balance for month 8= 874.4628553045594 
Calculated interest for month 8= 27.154372875246846 
Min_monthly_payment for month 7= 45.080861408990316 
Unpaid balance for month 7= 856.5363667708159 
Calculated interest for month 7= 26.597708231304285 
Min_monthly_payment for month 6= 44.15670375010601 
Unpaid balance for month 6= 838.9773712520142 
Calculated interest for month 6= 26.05245521256255 
Min_monthly_payment for month 5= 43.25149132322884 
Unpaid balance for month 5= 821.778335141348 
Calculated interest for month 5= 25.518379880705016 
Min_monthly_payment for month 4= 42.364835751102646 
Unpaid balance for month 4= 804.9318792709503 
Calculated interest for month 4= 24.995253093150563 
Min_monthly_payment for month 3= 41.49635661820505 
Unpaid balance for month 3= 788.4307757458959 
Calculated interest for month 3= 24.48285040474098 
Min_monthly_payment for month 2= 40.645681307531845 
Unpaid balance for month 2= 772.2679448431049 
Calculated interest for month 2= 23.980951971443787 
The new balance= 796.2488968145487 
Total interest paid 23.48934245602919 

あなたはまだ処理するために、ベースケース(終了条件)を持っている、そしておそらくいくつかの書式設定の問題の後のような...

interest=balance*monthly_interest_rate 
if months==1: 
    print("The new balance= ", balance) 
    return interest 

が、これは主な問題を修正しました。