繁体   English   中英

这个lcm python代码我做错了什么?

[英]What am I doing wrong with this lcm python code?

这是我的代码:

def gcd(a,b):
    if a%b == 0:
        return b
        print b

    elif b%a == 0:
        return a
        print a
    else:
        if a > b:
            gcd(a%b,b)
        elif b > a:
            gcd(b%a,a)
        else:
            return a
            print a
def lcm(a,b):
    if a==b:
        return a
    else:
        y = gcd(a,b)
        return (a*b)/y
        print (a*b)/y

我究竟做错了什么? 我一直收到错误,因为显然y = gcd(a,b)是一个NoneType ,它必须是一个整数。 但从我看来它是一个整数。

在你对gcd的递归调用前return 否则,如果它在其中一个分支中结束,则返回None

return后的print语句永远不会到达。

实际上,对于gcdlcm ,代码可以更简单,因为你的一些基本情况重叠。

def gcd(a, b):
    if b == 0:
        return a
    else:
        return gcd(b, a % b)

def lcm(a, b):
    return a * b / gcd(a, b)

不要忘记:对于递归函数,您必须使用return来链接递归调用。

一旦执行了return语句,控件就会退出函数调用。 所以你的print语句永远不会执行。 你应该在返回之前写一下print语句。 用笔和纸做干运行也有助于执行流程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM