TC_DHL 发表于 2021-3-10 14:24:09

函数:递归是神马 | 记录一下

本帖最后由 TC_DHL 于 2021-3-10 19:39 编辑

#. 使用递归编写一个函数,利用欧几里得算法求最大公约数,例如 gcd(x, y) 返回值为参数 x 和参数 y 的最大公约数。
#这里求得了最大公约数,也增加了求得最小公倍数的值, 应该没有写错
#打印结果
#输入一个被除数: 135
#输入一个除数: 10
#最大公约数为:5, 最小公倍数为:270

def gys_gbs(x, y):
    if y:
      return gys_gbs(y, x%y)
    else:
      gbs = num1 * (num2 / x)
      print('最大公约数为:%d, 最小公倍数为:%d' % (x, gbs))
num1 = int(input('输入一个被除数: '))
num2 = int(input('输入一个除数: '))
gys_gbs(num1, num2)

#刚刚加了一个循环, 就是可以一直计算想要的结果
continuenum = 1
while continuenum > 0:
    num1 = int(input('输入一个被除数: '))
    num2 = int(input('输入一个除数: '))

    def gys_gbs(x=0, y=0):
            if y:
                return gys_gbs(y, x%y)
            else:
                gbs = num1 * (num2 / x)
                print('最大公约数为:%d, 最小公倍数为:%d' % (x, gbs))
    gys_gbs(num1, num2)

笑星星 发表于 2021-3-10 15:44:58

没用

小伤口 发表于 2021-3-10 15:46:04

笑星星 发表于 2021-3-10 15:44
没用

你觉得没用,你可以保持意见,但不用你说出来

笑星星 发表于 2021-3-10 18:08:16

我是初学者,我现在学递归,我把代码抄下来执行,但显示错误,就这意思

TC_DHL 发表于 2021-3-10 19:38:18

笑星星 发表于 2021-3-10 18:08
我是初学者,我现在学递归,我把代码抄下来执行,但显示错误,就这意思

我并没有使用IDLE, 你可以用pycharm来执行看下

小伤口 发表于 2021-3-10 22:38:54

笑星星 发表于 2021-3-10 18:08
我是初学者,我现在学递归,我把代码抄下来执行,但显示错误,就这意思

对不起
是我激动了{:10_266:}
页: [1]
查看完整版本: 函数:递归是神马 | 记录一下