本帖最后由 jackz007 于 2019-12-19 22:47 编辑
- if a:
- list1.append(a%2)
- bin1(a//2)
- else:
- list1.reverse()
- return list1
复制代码
return 语句位于 if 的 else 语句块中,属于有条件执行,就是说,这个函数不是全天候都有返回值,只是在满足特定条件(a = 0)的时候才会有返回值。函数最后返回的时候肯定没有通过 return 语句,而函数如果不通过 return 返回,其返回值自然就是 None。
只要调整 return 语句的缩进,把有条件返回改为无条件返回便可解决此问题:
- if a:
- list1.append(a%2)
- bin1(a//2)
- else:
- list1.reverse()
- return list1
复制代码
楼主代码的思路是先取余后递归,如果改变一下顺序,先递归后取余,就不再需要 else 和 list1 . reverse() 语句了,从而使代码得到简化:
- def bin1(a):
- if a:
- bin1(a // 2)
- list1 . append(a % 2)
- return list1
- list1 = []
- print(bin1(10))
复制代码