|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小菜鸟的学习之路又碰壁了,呜呜呜呜~~~再次希望路过大神不吝赐教
1、利用欧几里得算法,求最大公约数
- def gcd(x, y):
- while y:
- t = x % y
- x = y
- y = t
-
- return x
-
- print(gcd(4, 6))
复制代码
这是佳宇老师的答案,我的疑问是:
1、最后循环输出的返回值,难道不是Y嘛,举例gcd(9,2)
t = (9/2的余数)=1
x = 2
y = 1
while循环,t = (2/1的余数)=0
这个时候1就是最大公约数了,而1=y,所以为什么return返回了x呀
2、编写一个十进制转换为二进制的函数,要求用除2取余的方法
- def zuoye02(num1, num2):
- a = bin(num1 % 2)
- b = bin(num2 % 2)
- print(num1 ,num2 , "转换为二进制是" , a,b)
- 这是我写的函数,调用zuoye02()检验的时候,输出值也是对的
- def Dec2Bin(dec):
- temp = [] #先建立一个列表的初始值
- result = '' #建立一个结果的初始值,方便后面计算
- while dec: #当参数dec为ture时,开始循环以下内容
- quo = dec % 2 #将参数除2的余数赋值给quo的变量名
- dec = dec // 2 #将参数地板除2的值赋值给dec(向下取整)
- temp.append(quo) #将循环计算得出的quo值添加进temp的列表中,默认在末尾,temp列表中现在元素均为余数,但是到这里是在确认什么?或者是为什么要这样做呢?
- while temp: #temp为ture时,开始循环以下
- result += str(temp.pop()) #结果加上,temp列表中最后一个元素并以字符串的形式显现出来
- return result #返回result结果的值
- print(Dec2Bin(62))
- 这是佳宇老师的答案
复制代码
我不是特别理解,我先说一下我的理解哈,就是我好像理解大部分语句,但是不明白为什么要这样写,天
|
|