|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- def gcd(x,y):
- r=x%y
- if r==0:
- #print('%d和%d的最大公约数为:%d'%(x,y,y))
- return y
- else:
- n=y%r
- if n==0:
- #print('%d和%d的最大公约数为:%d'%(x,y,r))
- return r
- else:
- gcd(r,n)
-
复制代码
求教各位大神:小白在做课后习题的时候自己写了这段代码,print里面的那句话可以正常打印,但是却没有返回值,测试了下返回值是None,这是为什么呢
我详细解释一下吧,我添加了几个语句,运行结果如下
- def gcd(x,y):
- r=x%y
- if r==0:
- print('r')
- print('%d和%d的最大公约数为:%d'%(x,y,y))
- return y
- else:
- n=y%r
- if n==0:
- print('2',r,n)
- print('%d和%d的最大公约数为:%d'%(x,y,r))
- return r
- else:
- print('1',r,n)
- return gcd(r,n)
复制代码
呃,代码。。
代码的问题出现在你递归之后没有归去来兮,递了之后没有返回,所以在最后一次递归满足条件后就删了,可能内存占用问题?或者命名空间问题?命名空间的问题可能性比较大,就是python找不到你这个y值究竟是指哪一个y,返回到哪里,但是又需要一个对象,然后就赋值了none,这点儿可以看出python还是很人性化的。你在加入return之后值会返回回来,代码就补充完整了。另外你的print语句地方有点问题,可以修改一下。
|
|