先上用Python写的十进制转二进制的函数代码:

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

图解此函数执行过程:

文字描述此函数的执行过程:

以十进制数10作为例子来解释递归问题。首先,进入函数Dec2Bin(10),此时参数dec=10,而result接受的是Dec2Bin(5)的返回值;于是,程序又进入了Dec2Bin(5)的函数体,注意,此时Dec2Bin(10)的函数程序还没有执行完,正在外层程序等待Dec2Bin(5)给它返回result的值呢。在Dec2Bin(5)的函数里,result的值又是Dec2Bin(2)的返回值;于是乎,程序又让Dec2Bin(5)等到起,转而进入Dec2Bin(2)的函数里。在Dec2Bin(2)的函数里,同样有个result的值,它是Dec2Bin(1)的返回值;程序暂停了Dec2Bin(2)继续往下执行,来到了Dec2Bin(1)函数体,然而,Dec2Bin(1)的result的值是Dec2Bin(0)的返回值;正在这时,程序说,Dec2Bin(dec)函数的参数dec为假的时候,执行else语句,即返回result,而此时result就是初始化时的空值,所以,Dec2Bin(0)返回空值给Dec2Bin(1),并被Dec2Bin(1)的result所接受。紧接着,Dec2Bin(1)继续执行没有完成的代码,即:return result+str(dec%2)这条语句,根据Dec2Bin(1)当前的result及dec的值,返回了字符串“1”,这个字符串就传给了还在外层等待的Dec2Bin(2)。以此类推,最终让Dec2Bin(10)这个函数也得到了它的result。

总结:递归就是外层的函数的结果取决于内层函数的相关值,直到内层函数一层一层地把相关的值都返回来为止。

新手一枚,自我学习中,有问题欢迎指正!

最新文章

  1. 史上最全QC学习方案,值得收藏!
  2. 将 instance 连接到 second_local_net - 每天5分钟玩转 OpenStack(85)
  3. Codeforces Round #346 (Div. 2)E - New Reform(DFS + 好题)
  4. 银行账户管理系统(oracle数据库连接池,数据库的链接,)
  5. [Stephen]页面实现瀑布流源码
  6. (转载)AS3领航系列教程 之 AS3程序的入口
  7. Android中使用ListView绘制自定义表格(2)
  8. [置顶] 强制访问控制内核模块Smack
  9. react学习之props
  10. nginx+apache 404错误页面
  11. spring整合mybatis,springMVC的0配置文件方式
  12. python——迭代器和生成器
  13. Python初学——pickle & set
  14. JsonCPP库使用
  15. 常见内网IP段
  16. jqgrid获取选中行指定列的值
  17. Fiddler4入门--手机抓包工具安装和使用说明
  18. [CodeForces - 614C] C - Peter and Snow Blower
  19. java编程 求和
  20. Codeforces Round #265 (Div. 2) C. No to Palindromes! 构造不含回文子串的串

热门文章

  1. dataGridView 设置
  2. dpkg:处理软件包 mysql-server-5.5 (--configure)时出错
  3. Uoj #274. 【清华集训2016】温暖会指引我们前行 LCT维护边权_动态最小生成树
  4. 【转载】intellij idea如何将web项目打成war包
  5. php第六讲
  6. 多重循环、缓冲区管理、数组(day06)
  7. Java核心技术读书笔记02
  8. Linux下进程与线程的区别
  9. 修改layui的后台模板的左侧导航栏可以伸缩
  10. 关于autoupgader的狗屎问题