【问题标题】:Can anyone explain how this code works? GCD, Recursive, Euclidian algorighm谁能解释这段代码是如何工作的? GCD、递归、欧几里得算法
【发布时间】:2016-12-15 03:44:54
【问题描述】:

谁能帮我解释一下这段代码是如何工作的?我试图了解递归是如何工作的以及如何编写它。新同学,谢谢。

def gcdRecur(a, b):
'''
a, b: positive integers

returns: a positive integer, the greatest common divisor of a & b.
'''

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

obj = gcdRecur(9,12)
print (obj)

【问题讨论】:

  • 欢迎来到 stackoverflow :) 与其问“谁能向我解释这是如何工作的”,不如阅读欧几里得算法上的维基百科页面,并询问一个更具体的问题你被困在的确切部分。否则很难回答你的问题,因为不清楚你需要什么帮助。 stackoverflow.com/tour 值得一读。
  • 欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 on topichow to ask 在这里申请。 StackOverflow 不是编码或教程服务。

标签: algorithm recursion iteration


【解决方案1】:

这必须是重复的,但这是欧几里得算法的实现。基本原理是a和b的最大公因数(其中b

【讨论】:

    【解决方案2】:

    这是Euclid's algorithm 的实现。

    简单地说,% 是取模运算符,它返回第一个操作数除以第二个操作数的余数,因此 a % b 将 9 除以 12,即 0 与余数 9。递归交替参数,所以下一个运算将是12 % 9 == 3,然后是9 % 3 == 0,因为 3 除以 9,没有余数。 3 也是 12 的除数,因为它是它自己和 9 的和,9 是一个被它整除的数,没有余数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-10
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多