递归好难啊
1、十进制转化为2进制def Dec2Bin(dec):
result = '' #不懂这个是什么用
if dec:
result = Dec2Bin(dec//2) #这是取2,如果是8(10),2进制不是1×2*3,所以应该是1000,那除2,不就是4而已,就算再循环也是4//2=2,2//2=1
return result + str(dec%2) #上面求出了4,加个字符转义什么余数什么用,是只有这一步是在递归吗
else:
return result
print(Dec2Bin(8))
2、列表如下
result = [] #这个是起列表作用?还是只是递归后,加个[]而已
def get_digits(n):
if n > 0:
result.insert(0, n%10) #为什么位置参数是0,那不是都是在前面插入么,明明求的是余数,余数不是都在后面吗
get_digits(n//10)
get_digits(12345)
print(result)
育碧 result = '' #不懂这个是什么用这个是等于把变量初始化,后面递归得到结果依次拿去拼接上
得到最后的result,因为最后一次递归并不会进入if条件,而进入else 如果你没初始化就会报错
result = Dec2Bin(dec//2) #这是取2,如果是8(10),2进制不是1×2*3
所以应该是1000,那除2,不就是4而已,就算再循环也是4//2=2,2//2=1我看不懂你问题里的 8(10)。。。但是就是把 dec 的值地板除2,然后进入递归
return result + str(dec%2) #上面求出了4,加个字符转义什么余数什么用,是只有这一步是在递归吗上一步在递归了,不是这一步,这一步是每次递归的结果相互拼接起来
result = [] #这个是起列表作用?还是只是递归后,加个[]而已同上题,变量赋值为空字符串、字典、列表等大部分都是为了初始化数值,为后面代码做准备条件,否则会报错NameError
result.insert(0, n%10) #为什么位置参数是0,那不是都是在前面插入么,明明求的是余数,余数不是都在后面吗去了解下除二取余法算二进制:
例如:
把89化为二进制的数
89÷2=44 余1
44÷2=22 余0
22÷2=11 余0
11÷2=5 余1
5÷2=2 余1
2÷2=1 余0
1÷2=0 余1
然后把余数由下往上排序
1011001(2)
这样就把89化为二进制的数了
——转至百度百科 sofa 看这个吧,有详细解释:戳我前进
页:
[1]