鱼C论坛

 找回密码
 立即注册
查看: 1171|回复: 7

23,24讲习题问题

[复制链接]
发表于 2018-3-27 10:35:00 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 superli 于 2018-3-27 14:47 编辑

def Dec2Bin(dec):
    result = ''
   
    if dec:
        result = Dec2Bin(dec//2)
        return result + str(dec%2)
    else:
        return result

print(Dec2Bin(62))
这程序是如何一步步运行的,还有result=Dec2bing(dec//2),这里为何要dec除以2.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-27 10:43:21 | 显示全部楼层
result = ''是建立一个空的字符串,然后下边dec//2是十进制转二进制的算法,

不理解的话,你可以看一下下面链接详细介绍的十进制转二进制
https://jingyan.baidu.com/article/597a0643614568312b5243c0.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-27 13:59:57 | 显示全部楼层
十进制转为二进制:
这里的递归相当于下面的while循环
    while dec:#这个循环用来找出每一位数0或1
        quo = dec % 2
        dec = dec // 2
        temp.append(quo)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-27 14:37:15 | 显示全部楼层
Zmynx_2017 发表于 2018-3-27 10:43
result = ''是建立一个空的字符串,然后下边dec//2是十进制转二进制的算法,

不理解的话,你可以看一下 ...

//是除法且保留整数部分,下面的dec%2才是取余数转二进制吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-27 18:32:00 | 显示全部楼层
superli 发表于 2018-3-27 14:37
//是除法且保留整数部分,下面的dec%2才是取余数转二进制吧

那个上下是有关联的,好好看看怎么转的二进制,给你的那个连接,

结合着代码,好好看。%这个是取余数,但是,他取余数取得是每次

//除法运算后的那个数,好好看看怎么转的二进制。你就理解了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-27 21:16:19 | 显示全部楼层
本帖最后由 吴阿汤 于 2018-3-27 21:18 编辑
  1. c2Bin(6):    #这里我们用6来举个例子吧
  2.     result = ''    #赋予一个返回值
  3.    
  4.     if dec:
  5.         1.result = Dec2Bin(6//2)#这里dec!=0,原地调用函数
  6.             2.result = Dec2Bin(3//2)#继续原地调用
  7.                     3.result = Dec2Bin(1//2)#继续原地调用
  8.                      
  9.                          4. result = Dec2Bin(0//2)#dec=0,返回result=‘’

  10.                 3..return result + str(dec%2) #执行这一步,返回一个值,回到上一步的
  11.                                                #的两个2.分支运行,然后最后运行1.的两个
  12.             2..return result + str(3%2)
  13.        1.return result + str(dec%2)

  14.     else:
  15.         return result

  16. print(Dec2Bin(62))
复制代码

关于十进制转二进制的原理参考https://jingyan.baidu.com/article/597a0643614568312b5243c0.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-28 11:08:56 | 显示全部楼层
吴阿汤 发表于 2018-3-27 21:16
关于十进制转二进制的原理参考https://jingyan.baidu.com/article/597a0643614568312b5243c0.html


                3..return result + str(dec%2) #执行这一步,返回一个值,回到上一步的
                                               #的两个2.分支运行,然后最后运行1.的两个
        不好意思,到这一步之后有些不太懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-28 14:20:58 | 显示全部楼层
本帖最后由 吴阿汤 于 2018-3-28 14:27 编辑

superli 发表于 2018-3-28 11:08
3..return result + str(dec%2) #执行这一步,返回一个值,回到上一步的
            ...


上面这个的过程流程分为两步               调用函数过程:1234返回值结束         一步一步返回的过程 332211
看来你对递归的过程不够了解,我贴一个我对于递归过程的理解图示吧,看图比较好理解
python.png
每个方框里分别填1、2、3、4,分支也是一样的1、2、3,最后的那个方框就是返回值,然后一步步返回的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 18:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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