0

对于这个函数,我必须使用贪心算法找到所有加起来为分数的“埃及分数”。所有埃及分数的分子值为 1,它们是不同的,并且总和 =(分子/分母)。我了解如何使用除法和 math.ceil 找到一个。但是,在我尝试使用分子和分母的值后,该函数似乎永远不会解析。有没有办法不使用除法(即没有上限、除法或下限),只使用乘法和减法来重写我的代码?我可以假设分子总是 < 分母,并且都是正整数。

def egypt(numerator, denominator):
    fracs = []
    while numerator != 0:
        n = int(numerator)
        d = int(denominator)
        c = math.ceil(d / n)
        fracs.append(c)
        n = (c*n) - d
        d = c*d
    return fracs
4

1 回答 1

2

math.ceil没关系。问题是您每次都重新初始化循环。这是固定功能:

def egypt(numerator, denominator):
    fracs = []
    n = int(numerator)
    d = int(denominator)
    while n != 0:
        c = math.ceil(d / n)
        fracs.append(c)
        n = (c*n) - d
        d = c*d
    return fracs
于 2019-04-15T18:25:58.863 回答