我必须定义一个函数,其中:
从一个正整数开始
original
,继续乘以original
并n
计算生成的所有倍数的总和,包括original
直到总和不再小于total
。返回达到或高于给定总数所需的最小乘法数。
例如:
multiply_until_total_reached (1,5,2)
1*2=2, (1+2)<5, 2*2=4, (1+2+4)>5, 需要2次乘法
multiply_until_total_reached (1,15,2)
1*2=2, (1+2)<15, 2*2=4, (1+2+4)<15, 4*2=8, (1+2+4+8)=15, 3次乘法
我当前的代码有效,但在某些情况下返回的值偏离 1。在 1,1038,2 的情况下,我需要 9 次乘法而不是 10 次,但在 1,15,2 的情况下,我得到正确数量的 (3) 次乘法。
这是我的代码:
def multiply_until_total_reached(original, total, n):
if total < original:
return 0
elif total > original:
sumofdigits = 0 #declares var to keep track of sum of digits to compare to total
timesofmult = 0 #track how many multiplication operations
while sumofdigits <= total + 1:
multnum = original * n
sumofdigits = multnum + original
original = multnum
sumofdigits = sumofdigits + multnum
timesofmult = timesofmult + 1
return timesofmult
是什么导致它关闭?