找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3869|回复: 4

[已解决] 代码问题,请帮忙查看(初学者)

2

主题

5

帖子

5

积分

贫民

积分
5
xcaojianhong 发表于 2016-12-29 20:39:43 | 显示全部楼层 |阅读模式
  1. <p></p><p></p>
复制代码
  1. # 递归写bin()函数

  2. def mybin(x):
  3.     if x==0:
  4.         return str(0)
  5.     elif x==1:
  6.         return str(1)
  7.     else:
  8.         a=str(x%2)+mybin(x//2)
  9.     #return a    例如mybin(5)直接返回a的话是'101',但是返回a[::-1]却是'011',怎么不是'101'呢(经过字符串翻转)
  10.     return a[::-1]
复制代码

回复

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2016-12-31 16:35:51 | 显示全部楼层
递归时a[::-1]每次都会逆序排一遍,结果就不是你想要的了。所以在函数内部用return a。对函数返回的结果再使用[::-1]
python3.4.4, win10
回复 支持 1 反对 0

使用道具 举报

2

主题

5

帖子

5

积分

贫民

积分
5
xcaojianhong  楼主| 发表于 2016-12-29 20:43:29 | 显示全部楼层
告诉我哪边出的问题,测试了很久就是不清楚最后一行代码哪出错了。
回复 支持 反对

使用道具 举报

0

主题

4

帖子

4

积分

贫民

积分
4
tony-stark 发表于 2016-12-31 10:21:05 | 显示全部楼层
二进制应该是最后结果取反。你这个每次递归后都取反了。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

3

积分

贫民

积分
3
寒江雪 发表于 2017-1-5 08:51:49 | 显示全部楼层
我是小白,我理解的是这样的:
第一次结果为  str(1)+mybin(2)
第二次结果为   str(1)+(str(0)+mybin(1))
第三次结果为    str(1)+reverse(str(0)+str(1))
第四次结果为  reverse(str(1)+reverse(str(0)+str(1)))
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表