I don’t understand why the error TypeError: can't multiply sequence by non-int of type 'float'
comes out, and why the count
is always zeroed if in return
remove , count
From the problem: Having started training, the skier ran 10 km on the first day. Every next day he increased the mileage by 10% of the mileage of the previous day.
def Distance (d, count = 0):
if d == 0:
return 10
else:
res = Distance (d - 1) * (1 + 0.1) # count 10% of the previous value and add to it.
count + = res # put the result into the general counter.
print (round (res, 2), '', count) # print the distance traveled today and the total distance traveled.
return res, count
print (Distance (3))
I would be very grateful if you could clarify. Otherwise I don’t understand what is happening.
Answer 1, authority 100%
Your function returns a tuple of two numbers – res and count.
But on this line
res = Distance (d - 1) * (1 + 0.1)
you are trying to work with the return value of a function as if it were a single number.
You need something like this:
def Distance (d):
if d == 0:
return 10, 10
else:
prev_res, prev_count = Distance (d - 1)
res = prev_res * (1 + 0.1)
count = prev_count + res
print (round (res, 2), '', count)
return res, count
Distance (3)
And, by the way, is this a requirement in the problem – to solve it through recursion? Because it would be much easier to solve it through the formula for the sum of a geometric progression