2016-11-26 186 views
0

我想实现Euclid算法后我换变量,它们返回到它的原始值

def gcd(num1, num2): 
    if num2 > num1: 
     num1, num2 = num2, num1 
    while num1 % num2 != 0: 
     num1 %= num2 
     gcd(num1, num2) 
return num2 

当if语句得到执行,NUM1和NUM1 while循环中的值保持不变(因为有是如果语句)

我想保持num1总是比num2大,但代码运行,因为没有if语句。为什么?

+0

为什么嵌套函数调用? –

+0

它是Euclid的算法,我想在while循环里面做这个程序,直到我得到num1%num2 == 0 – Maysara

+0

你明白嵌套函数调用的功能吗? –

回答

0

有两种方法:在while循环和递归。它看起来像你混合起来。 的同时版本是:

def gcd(a,b): 
    while b: 
     a,b = b, a % b 
    return a 

的递归版本是这样的:

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

注意,如果你在函数中调用一个函数,你必须确保有一个终止标准,例如b == 0,并返回函数调用。之所以没有发生什么事情是因为你的嵌套函数调用的结果没有被传回给外部函数调用。

相关问题