鱼C论坛

 找回密码
 立即注册
查看: 6118|回复: 4

[已解决]python用递归写BIN()这个BIF报错,请问下是什么原因。

[复制链接]
发表于 2017-4-30 10:08:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def bindg(temp):
    jieguo = []
    """通过用递归来实现求一个十进制数转二进制数"""
    shang = temp // 2
    yu = temp % 2
    print(yu)
    if shang == 0:
        return [yu]
    else:
        return jieguo.extend(bindg(shang))

print(bindg(5210))
最佳答案
2017-5-5 15:52:17
你这写的。。。 最起码可以明显看出错了两处,第一:你每次迭代的时候把Line2: jieguo给清空了,后面做的再多都是无用功;第二,else:里面的return,list.extend加入的只能是列表,你却把【bindg(shang)】加进去了,这是个列表吗?这是个函数!
好人做到底,修改好了的代码给你,你拿去研究下把:
jieguo = []
def bindg(temp):
    """通过用递归来实现求一个十进制数转二进制数"""
    shang = temp // 2
    yu = temp % 2
    if shang == 0 and yu==1:#如果能整出,则输出1
        jieguo.append(1)
        #return jieguo   此时输出的jieguo 是个反着的二进制,下面做的就是将其“正过来”
        i=0
        while i+1<len(jieguo):
            jieguo.append(jieguo[0])
            jieguo.pop(0)
            i+=1
        return jieguo
    elif shang==0 and yu==0:#以0求二进制时:
        return [yu]
    else:
        jieguo.append(yu)
        return bindg(shang)

print(bindg(5210))
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-4-30 20:35:35 | 显示全部楼层
自己检查了下,没找出为什么,我重新设置一个全局变量的列表,来完成的这个问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-5 15:52:17 | 显示全部楼层    本楼为最佳答案   
你这写的。。。 最起码可以明显看出错了两处,第一:你每次迭代的时候把Line2: jieguo给清空了,后面做的再多都是无用功;第二,else:里面的return,list.extend加入的只能是列表,你却把【bindg(shang)】加进去了,这是个列表吗?这是个函数!
好人做到底,修改好了的代码给你,你拿去研究下把:
jieguo = []
def bindg(temp):
    """通过用递归来实现求一个十进制数转二进制数"""
    shang = temp // 2
    yu = temp % 2
    if shang == 0 and yu==1:#如果能整出,则输出1
        jieguo.append(1)
        #return jieguo   此时输出的jieguo 是个反着的二进制,下面做的就是将其“正过来”
        i=0
        while i+1<len(jieguo):
            jieguo.append(jieguo[0])
            jieguo.pop(0)
            i+=1
        return jieguo
    elif shang==0 and yu==0:#以0求二进制时:
        return [yu]
    else:
        jieguo.append(yu)
        return bindg(shang)

print(bindg(5210))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-5 21:04:11 | 显示全部楼层
莺与鸢 发表于 2017-5-5 15:52
你这写的。。。 最起码可以明显看出错了两处,第一:你每次迭代的时候把Line2: jieguo给清空了 ...

我后面的实现代码和你这个差不多,就是设置了一个全局变量,有点不甘心啊。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-5 21:04:50 | 显示全部楼层
741712547 发表于 2017-5-5 21:04
我后面的实现代码和你这个差不多,就是设置了一个全局变量,有点不甘心啊。

太谢谢你了,这么多人,只有你一个人回复并且把相应的错误给找出来了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-22 22:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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