【发布时间】:2015-05-01 22:53:57
【问题描述】:
我正在尝试编写一个使用递归将给定整数转换为二进制数的脚本。这是我写的代码:
def dec2bin(n):
if n > 0:
if n%2 == 0:
li.append(0)
else:
li.append(1)
return dec2bin(n/2)
else:
aa = li[::-1]
for e in aa:
print e,
n = int(raw_input())
li = []
dec2bin(n)
但是,此代码会继续运行,并且永远不会输出正确的答案。这段代码似乎有什么问题?
【问题讨论】:
-
n这里不是一个十进制数,它是一个int,它没有固有基数(或者,如果你想拉伸它并说它有一个,固有基数是二进制)。 -
所以更正确地说,这个函数不是将十进制转换为二进制,它只是在二进制中打印一个正整数。那就是它是否有效。
-
keeps on running and never outputs the correct answer我认为您忘记输入raw_input()的输入,它只是在等待您的输入。 -
@Marein:如果它可以被2整除,那意味着它的最后一位是0。
-
@Marein 我的代码使用了以下链接中提到的算法:interactivepython.org/courselib/static/pythonds/BasicDS/…
标签: python python-2.7 recursion