是张美丽啊 发表于 2020-4-21 15:33:45

22课后 递归欧几里求最大公约数 求助

这是我的代码:
#递归:欧几里得法求最大公约数
def zdgys(x,y):
    if x%y==0:
      return y
    else:
      r=x%y
      b=y%r
      return zdgys(b,r)
X=input('【求最大公约数】\n请输入第一个数:')
Y=input('请输入第一个数:')
print(zdgys(X,Y))

运行的时候总是跳出这句话

line 3, in zdgys
    if x%y==0:
TypeError: not all arguments converted during string formatting

翻译了下(类型错误:并非所有在字符串格式设置期间转换的参数),但是不明白,请问该怎么改求解答!
先谢谢回答的大佬哦{:9_228:}

qiuyouzhi 发表于 2020-4-21 15:37:50

你好歹得用int转换一下吧,直接拿字符串取余。。。
def zdgys(x,y):
    if x%y==0:
      return y
    else:
      r=x%y
      b=y%r
      return zdgys(b,r)
X=int(input('【求最大公约数】\n请输入第一个数:'))
Y=int(input('请输入第一个数:'))
print(zdgys(X,Y))

是张美丽啊 发表于 2020-4-21 16:13:20

qiuyouzhi 发表于 2020-4-21 15:37
你好歹得用int转换一下吧,直接拿字符串取余。。。

怪不得呢,打扰了{:9_230:}
页: [1]
查看完整版本: 22课后 递归欧几里求最大公约数 求助