我的作业是“编写一个函数,它接收两个数字并递归地将它们相乘”,整数的解决方案出现在网站上的几个问题,但有可能浮点数我写了一个代码,可以处理一个浮点数,但我无法想象如何处理2作为一个新手我不知道有这样的可能性是我的代码
def multy(n, m):
# deals with one float situation
if m % 1 != 0:
return multy(m, n)
else:
if m == 0:
return 0
elif m < 0:
return -(n - multy(n, m+1))
else:
return n + multy(n, m-1)
答案 0 :(得分:1)
你可以&#34;转换&#34;你的浮动到int并使用你的multy函数,然后&#34;转换&#34;它回到浮动:
def fmulty(n, m):
nd = len(str(n).split('.')[1])
md = len(str(m).split('.')[1])
return multy(n * pow(10, nd), m * pow(10, md)) / pow(10, md+nd)
这个想法是通过将小数向右移动来使n
和m
整数。例如,您有n = 1.234
,那么您需要乘以1,000
(nd=3
)。 m
中md
的内容相同。完成后,您可以使用multy
并将结果除以1E(nd + md)。我们说m = 5.67
然后你有md = 2
。然后,您需要将结果除以1E5
,即100,000
。