鱼C论坛

 找回密码
 立即注册
查看: 1810|回复: 7

[已解决]用递归方法判断是否是欧几里得数 的问题!

[复制链接]
发表于 2020-3-24 21:24:40 | 显示全部楼层
运算之前,保存副本啊。
  1. def gcd(x,y):
  2.     a,b=x,y
  3.     if x % y != 0:
  4.         times = 1
  5.         z = x % y
  6.         r = y % z
  7.         if r == 0:
  8.             print('%d 为 %d 与 %d 的最大公约数'%(z,a,b))
  9.         else:
  10.             return gcd(z,r)
  11.     else:
  12.         print('输入的整数不符合要求!')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-24 21:57:14 | 显示全部楼层
本帖最后由 sunrise085 于 2020-3-24 21:59 编辑
Twilight6 发表于 2020-3-24 21:48
我递归了  a,b 会被递归的值重新赋值


不好意思,没看到你使用了递归,那样的话,你就不能再函数中这样print了。
因为一旦执行到if语句,一般都会进行了若干次递归了,那时的gcd(x,y)中的x和y早就不是原来的x和y 了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-11 03:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表