是否有可能以递归方式乘以2个浮点数?

时间:2017-11-29 11:14:08

标签: python recursion

我的作业是“编写一个函数,它接收两个数字并递归地将它们相乘”,整数的解决方案出现在网站上的几个问题,但有可能浮点数我写了一个代码,可以处理一个浮点数,但我无法想象如何处理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)

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)

这个想法是通过将小数向右移动来使nm整数。例如,您有n = 1.234,那么您需要乘以1,000nd=3)。 mmd的内容相同。完成后,您可以使用multy并将结果除以1E(nd + md)。我们说m = 5.67然后你有md = 2。然后,您需要将结果除以1E5,即100,000