|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
哪位大神能不能解释下,这到底是什么意思啊,这是课后的答案
1. 编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如gcd(x, y)返回值为参数x和参数y的最大公约数。
def gcd(x, y):
while y:
t = x % y
x = y
y = t
return x
print(gcd(4, 6))
这是我写的(到else哪里就没有返回值)
def ojld(a,b):
if a>=b and b>0:
if a%b==0:
print(b)
else:
while 1==1:
c=a%b
if c==0:
print(b)
break
else:
print('error')
哎,自己脑子也不算很清楚,有没有大神解释下答案的意思,顺便帮我看看我写的怎么样,感觉自己不适合学Py啊,脑子不行.
我就按照你的这个代码思路简单说说吧
def ojld(a,b):
if a>=b and b>0: #这里只需要b>0就行了吧
if a%b==0:
print(b)
else:
while 1==1: # 这里可以写为 While True:
c=a%b #这儿你要再想想让a,b的值发生改变
if c==0:
print(b)
break #这个break 你应该是想放在上面那个if里面吧? 但是这儿少了一个缩进,所以就直接放在了while下面,因此循环了一次就直接退出了.
导致你说的else没有反应, 然后还有个问题,就是你就算把break放进了if下面,那这个将会成为死循环,因为你的a,b的值并没有因为C=a%b
改变,也就是C 不会等于0,也就进入不了下面那个if语句中,然后死循环下去
else:
print('error')
|
|