【问题标题】:What is the result of this recursive function这个递归函数的结果是什么
【发布时间】:2022-11-18 04:54:00
【问题描述】:

这个递归函数返回什么?

def fun(a,b):

      if(b==0):

            return a

      else:

            return fun(b, a%b)

我尝试检查一些数字,例如它为 15,6 返回 3

【问题讨论】:

  • 它应该返回 3 而不是 2 开始。
  • 它实现了某种众所周知的算法,但如果您不熟悉该算法或它计算的内容,那么观察一堆不同参数的输出可能不会有太大帮助。

标签: python recursion


【解决方案1】:

这将计算 a 和 b 之间的最大公约数。

证明见这个问题:https://math.stackexchange.com/questions/59147/why-gcda-b-gcdb-a-bmod-b-understanding-euclidean-algorithm

两个数字 a 和 b 的最大公约数 (gcd) 是同时整除 a 和 b 的最大数。

注意:f(6, 15) 应该返回 3,因为 3 是既能整除 6 又能整除 15 的最大数

【讨论】:

    猜你喜欢
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多