lfc990426 发表于 2021-10-26 09:48:24

作业中二进制使用递归解决。做到一半

def erjinzhi(x):
   if int (x/2) == 0:
          print(int(x%2),end='')
   else:
          print(int(x%2),end='')
          x /=2
          erjinzhi(x)
运行之后 erjinzhi(8)为0001如何将它翻转过来呢?
我本来想着使用list.reverse()进行翻转过来,报错之后
试着看了看 erjinzhi(8)的类型为 nonetype。
谢谢大佬指点。

大马强 发表于 2021-10-26 09:56:26

先让其递归再打印
def erjinzhi(x):

    if int(x/2) == 0:
      print(int(x % 2), end='')
    else:

      temp = int(x % 2)
      x /= 2
      erjinzhi(x)
      print(temp, end='')


erjinzhi(8)

jackz007 发表于 2021-10-26 10:13:09

本帖最后由 jackz007 于 2021-10-26 10:41 编辑

def erjinzhi(x):
   if x :
         erjinzhi(x // 2)         # 递归
         print(x % 2 , end = '')# 注意此句的位置

erjinzhi(int(input()))
print()
      运行实况:
D:\0002.Exercise\Python>python x.py
8
1000

D:\0002.Exercise\Python>
      改变递归和打印的顺序输出 0001
def erjinzhi(x):
   if x :
         print(x % 2 , end = '')# 注意此句的位置
         erjinzhi(x // 2)         # 递归

erjinzhi(int(input()))
print()
      运行实况:
D:\0002.Exercise\Python>python x2.py
8
0001

D:\0002.Exercise\Python>

      

页: [1]
查看完整版本: 作业中二进制使用递归解决。做到一半