python用递归写BIN()这个BIF报错,请问下是什么原因。
def bindg(temp):jieguo = []
"""通过用递归来实现求一个十进制数转二进制数"""
shang = temp // 2
yu = temp % 2
print(yu)
if shang == 0:
return
else:
return jieguo.extend(bindg(shang))
print(bindg(5210))
自己检查了下,没找出为什么,我重新设置一个全局变量的列表,来完成的这个问题。 你这写的。。。{:10_269:} 最起码可以明显看出错了两处,第一:你每次迭代的时候把Line2: jieguo给清空了,后面做的再多都是无用功;第二,else:里面的return,list.extend加入的只能是列表,你却把【bindg(shang)】加进去了,这是个列表吗?这是个函数!
好人做到底,修改好了的代码给你,你拿去研究下把:
jieguo = []
def bindg(temp):
"""通过用递归来实现求一个十进制数转二进制数"""
shang = temp // 2
yu = temp % 2
if shang == 0 and yu==1:#如果能整出,则输出1
jieguo.append(1)
#return jieguo 此时输出的jieguo 是个反着的二进制,下面做的就是将其“正过来”
i=0
while i+1<len(jieguo):
jieguo.append(jieguo)
jieguo.pop(0)
i+=1
return jieguo
elif shang==0 and yu==0:#以0求二进制时:
return
else:
jieguo.append(yu)
return bindg(shang)
print(bindg(5210))
莺与鸢 发表于 2017-5-5 15:52
你这写的。。。 最起码可以明显看出错了两处,第一:你每次迭代的时候把Line2: jieguo给清空了 ...
我后面的实现代码和你这个差不多,就是设置了一个全局变量,有点不甘心啊。 741712547 发表于 2017-5-5 21:04
我后面的实现代码和你这个差不多,就是设置了一个全局变量,有点不甘心啊。
太谢谢你了,这么多人,只有你一个人回复并且把相应的错误给找出来了。
页:
[1]