23讲,输出少一位
#使用递归编写一个十进制转换为二进制的函数(要求采用“取2取余”的方式,#结果与调用bin()一样返回字符串形式)。
def ten_to_2(num):
global code
if num//2!=1: #除数为1时,跳出循环
code.insert(1,num%2)
return ten_to_2(num//2)
#string=''.join(code) #列表转换成字符串
return code
code= #最高位必然是1,放在最前面
number=int(input("enter an interger:"))
result=ten_to_2(number)
print(result)
???
倒数第4行,你是要取最高位吗?
那不应该是code吗? def ten_to_2(num):
if num : return ten_to_2(num // 2) + str(num % 2)
else : return ''
print(ten_to_2(int(input('enter an interger : ')))) qiuyouzhi 发表于 2020-3-23 12:35
???
倒数第4行,你是要取最高位吗?
那不应该是code吗?
啊,因为一开始是定义,code=,就是code【0】=1 在那个帖子中我已经回复你了。把if语句的条件改为if num//2!=0
在上个帖子中,我在四楼写的,你只修改了2和3,1和4你都没有修改。
我帮你修改了。
def ten_to_2(num):
global code
code.insert(0,num%2)
if num//2!=0: #除数为1时,跳出循环
return ten_to_2(num//2)
#string=''.join(code) #列表转换成字符串
return code
code=[] #最高位必然是1,放在最前面.注意,最高位不一定是1
print(ten_to_2(0)) #输入为0的时候最高位就不是1了。
print(ten_to_2(12)) 本帖最后由 猪猪虾 于 2020-3-23 13:09 编辑
sunrise085 发表于 2020-3-23 12:52
在那个帖子中我已经回复你了。把if语句的条件改为if num//2!=0
在上个帖子中,我在四楼写的,你只修改了 ...
是不是在写递归的时候,停止的条件都要比不用递归时候所使用的条件深一层,这个题如果不用递归的话停止条件应该是num//2!=1 jackz007 发表于 2020-3-23 12:41
蟹蟹 猪猪虾 发表于 2020-3-23 13:08
是不是在写递归的时候,停止的条件都要比不用递归时候所使用的条件深一层,这个题如果不用递归的话停止 ...
不用递归,循环条件也是0.
def ten_to_2(num):
code=[]
if num==0:
code.append(0)
while num!=0:
code.append(num%2)
num=num//2
return code
print(ten_to_2(0))
print(ten_to_2(12))
print(ten_to_2(5))
print(ten_to_2(10))
print(ten_to_2(1)) sunrise085 发表于 2020-3-23 13:28
不用递归,循环条件也是0.
是我之前思路就有问题,蟹蟹
页:
[1]