1

我写了一个计算两个数字的GCD的代码。 (24,12)的gcd是12.函数compute_gcd计算GCD并返回在主函数中打印的GCD。但是,当我将其返回到主函数时,输出为none,当我在compute_gcd函数本身中打印时,输出为12。使用计算GCD - Python函数返回

我在返回GCD时出错了?

def compute_gcd(a,b): 
    if(b==0): 
     return a    # Prints 12 if I replace with print a 
    else: 
     compute_gcd(b,a%b) 

def main(): 
    a=24 
    b=12 
    print compute_gcd(a,b) # Prints none 

main() 
+0

在'else'部分不归路 –

+2

的可能的复制[我希望“真”,但得到“无”(HTTP内://www.stackoverflow.com/questions/15210646/i-expect-true-but-get-none) –

回答

4

你忘了在else分支中输入return。这工作:

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

def main(): 
    a=24 
    b=12 

    print compute_gcd(a,b) # Prints 12 

main() 
-2

你的其他条件没有回报,因此输出是无。如果您将其更改为

else: 
    return compute_gcd(b,a%b) 

您将获得12

+2

与13分钟前发布的答案有何不同? – DeepSpace

+0

我没有看到答案选项卡打开。 Downvotes,地狱是的。 –

0

试试这个...你必须做一个returnelse声明

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

def main(): 
    a = 24 
    b = 12 

    print(compute_gcd(a,b)) 

main()