求助
大佬们能帮我看看这几道题吗,我是小学生,看到这3道题,眼前一黑你的题呢? 你好,能不能发一下题目…… 小鱼油你的题目呢? 0. 编写一个函数power()模拟内建函数pow(),即power(x, y)为计算并返回x的y次幂的值。
1. 编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如gcd(x, y)返回值为参数x和参数y的最大公约数。
2. 编写一个将十进制转换为二进制的函数,要求采用“除2取余”(脑补链接)的方式,结果与调用bin()一样返回字符串形式。
这几天学python学的云里雾里的{:10_266:} 人呢 本帖最后由 Twilight6 于 2020-6-14 10:09 编辑
2892150342ABC 发表于 2020-6-14 09:43
人呢
你没点回复别人看不见你发的,看注释吧
0. 编写一个函数power()模拟内建函数pow(),即power(x, y)为计算并返回x的y次幂的值
# 案例一
def power(x,y):
result = 1 # 初始化一个值
if y == 0:
return result# 所有数的 0 次幂都为 1
while y:# 循环计算结果
if y < 0:# 次幂 小于 0 是 1/x 形式
result /= x
y += 1
if y > 0: # 次幂 大于 0 是 x*x 的形式
result *= x
y -= 1
return result
# 案例一简化版
def power(x,y):
if y < 0:
return 1/x**(-y)
return x**y
1. 编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如gcd(x, y)返回值为参数x和参数y的最大公约数。
原答案:
# 案例二
def gcd(x, y):
if y:
return gcd(y, x % y)
else:
return x
# 案例二注释版,假设传入的 x , y 分别是 4,6
def gcd(x, y):#开始时候传入 x = 4 ; y = 6
# 第一次递归 x = 6 y = 4
# 第二次递归 x = 4 y = 2
if y:
# 刚开始 y = 6 条件成立执行if代码块
# 第一次递归 y = 4 继续进入 if 代码块
# 第二次递归 y = 2 继续进入 if 代码块
# 第三次递归 y = 0 条件不成立则进入else 代码块
return gcd(y, x % y)
# 进入第一次递归 gcd(6,4%6)即 gcd(6,4)
# 进入第二次递归 gcd(4,6%4) 即gcd (4,2)
# 进入第三次递归 gcd (2,4%2)即 gcd (2,0)
else:
return x# 第三次递归返回 x = 2
# 然后依次返回 先从第三次递归开始 gcd(2,0)-> gcd(4,2) -> gcd(6,4) -> gcd(4,6)
2. 编写一个将十进制转换为二进制的函数,要求采用“除2取余”(脑补链接)的方式,结果与调用bin()一样返回字符串形式。
def mybin(x):
temp = ''
if x < 1:
return ''
else:
temp += str(x%2)
return mybin(x//2)+temp 大哥能解释一下吗 2892150342ABC 发表于 2020-6-14 11:38
大哥能解释一下吗
注释里面写了呀~ 我是小学生,大哥您能解释一下什么是幂的值吗
页:
[1]