鱼C论坛

 找回密码
 立即注册
查看: 2154|回复: 5

请问我写的这个最大公约数的函数问题出在哪里?这样运行的结果返回值为 none

[复制链接]
发表于 2020-3-2 13:43:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def zdgys(p,q):
        r = p%q
        if r!=0:
            zdgys(q,r)
        else:
            return q
   
print(zdgys(9,6))

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 13:48:21 | 显示全部楼层
你忘记 return 了,应该这样:

  1. def zdgys(p,q):
  2.         r = p%q
  3.         if r!=0:
  4.             return zdgys(q,r)
  5.         else:
  6.             return q
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-2 13:50:42 | 显示全部楼层
用print打印出结果:
  1. def zdgys(p,q):
  2.          r = p%q
  3.          if r!=0:
  4.              zdgys(q,r)
  5.          else:
  6.              print(q)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-2 14:06:10 | 显示全部楼层
本帖最后由 jackz007 于 2020-3-2 14:13 编辑

        递归版
  1. def zdgys(p , q):
  2.     return zdgys(q , p % q) if q else p
  3. print(zdgys(9 ,6))
复制代码

        非递归版
  1. def zdgys(p , q):
  2.     while q:
  3.         p , q = q , p % q
  4.     return p
  5. print(zdgys(9 ,6))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-2 14:09:56 | 显示全部楼层
  1. def zdgys(p,q):
  2.     return zdgys(q,p%q) if p%q else q
  3. print(zdgys(9,6))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-2 14:29:22 | 显示全部楼层
你忘记 return 了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-23 03:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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