python课后习题疑问
题目:使用递归编写一个十进制转换为二进制的函数:首先我按照我的思路写了这样一个函数,输出的结果是“0101”,与我需要的输出结果“1010”是反的,我没想到有什么方法能够实现倒序打印,用了方法二;
方法一:
def bin2(dec):
if dec:
print(dec%2,end='')
return bin2(dec//2)
方法二:
#用列表方式实现倒序打印,但是这个方法有个弊端是,得在函数外部声明一个列表变量,如果在函数内部申明这个变量的话得不到想要的结果,想请教下各位大神,除了参考答案里的方法,还有没有更好的办法解决这个问题?
a=[]
def bin2(dec):
if dec:
a.append(dec%2)
return bin2(dec//2)
i = len(a)
while i:
print(a.pop(),end='')
i -= 1 def bin3(i):
a=[]
def bin2(dec):
if dec:
a.append(dec%2)
return bin2(dec//2)
i = len(a)
while i:
print(a.pop(),end='')
i -= 1
return bin2(i)
bin3(255)
外面再套一层就行了 kogawananari 发表于 2021-4-25 01:15
外面再套一层就行了
这确实也是一个解决办法,谢谢! def bin3(n):
string = ""
result = ""
while n:
y = n % 2
string += str(y)
n = n // 2
for i in range(len(string)):
result += string
return result
这样的呢 paohhee 发表于 2021-4-25 11:22
这样的呢
谢谢!您这样没有用到递归吧? elecfan 发表于 2021-4-25 14:05
谢谢!您这样没有用到递归吧?
没有审题,抱歉{:10_266:}
页:
[1]