先上用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。

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

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

什么是递归?用十进制转二进制的Python函数示例说明的更多相关文章

  1. C语言之利用递归将十进制转换为二进制

    #include<stdio.h>#include<stdlib.h>void change2(int num){  if (num != 0)   {   change2(n ...

  2. 5、StringBuffer与StringBuilder的区别(十进制转二进制)

    1. 在执行速度方面的比较:StringBuilder > StringBuffer 2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们 ...

  3. 十进制转二进制and位运算符

    先给大家送个福利! ---------------简单口算-------------------------- 10 >>  1010   除2取余倒写 /* 十进制转二进制规则是:除二取 ...

  4. PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载   中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...

  5. C++十进制转换为二进制

    题目内容:将十进制整数转换成二进制数. 输入描述:输入数据中含有不多于50个的整数n(-231<n<231). 输出描述:对于每个n,以11位的宽度右对齐输入n值,然后输出“-->” ...

  6. [原创]PostgreSQL中十进制、二进制、十六进制之间的相互转换

    在PostgreSQL中,二进制.十进制.十六进制之间的转换是非常方便的,如下: 十进制转十六进制和二进制 mydb=# SELECT to_hex(10); to_hex -------- a (1 ...

  7. C++进制转换(十进制转二进制、八进制、随意进制)

    十进制转二进制: //十进制转二进制 #include<iostream> using namespace std; void printbinary(const unsigned int ...

  8. PHP函数十进制、二进制、八进制和十六进制转换

    PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明,主要掌握各进制转换的方法,以应用于实际开发. 一,十进制(decimal system)转换函数说明 1,十进制转二进制 decbin ...

  9. Formiko总结整数十进制转换二进制原理

    引子: 为什么十进制转二进制的“辗转相除记录余数倒序输出”的算法是正确的?这个问题陪伴了Formiko半年. 实践: 实践一:把十进制数100转换成二进制数的图   上图和和下图唯一的区别在最后一位上 ...

随机推荐

  1. Linux 之常用操作指令详解

    1. 查看当做操作目录位置 > pwd 2. 查看(当前)目录里边的文件内容 > ls //list > ls -l 或ll //显示文件的详细信息 > ls -al //al ...

  2. Robot Framework(六)变量

    变量 2.5.1简介 变量是Robot Framework的一个不可或缺的特性,它们可以在测试数据的大多数地方使用.最常见的是,它们用于测试用例表和关键字表中关键字的参数,但所有设置都允许在其值中使用 ...

  3. day001 Python 计算机基础(2019年5月16日)

    &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp作为一名程序员或者即将踏入IT行业的准程序员,学习任何一门编程语言,都需要有基本的计算机基础 ...

  4. 小程序组件 Vant Weapp 安装

    文件夹的名称必须是英文 第一步:npm init -y 第二步:npm i vant-weapp -S --production

  5. Perl PPM安装模块

      介绍一下如何使用PPM(Perl Package Manager)安装模块(必须安装了ActivePerl).打开PPM,我们看到的界面是这样的: 我们看到第二行是工具栏,从左到右,第一个是查看仓 ...

  6. Problem 17

    Problem 17 If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there a ...

  7. 用python实现进度条功能

    我在做python的作业:ftp服务时,客户端能够上传.下载文件,这个时候需要编写一个进度条来表示当前的传输进度. 我们可以使用sys,模块来完成任务,需要用到sys.stdout这个方法: 程序示例 ...

  8. android 下载网络图片并缓存

    异步下载网络图片,并提供是否缓存至内存或外部文件的功能 异步加载类AsyncImageLoader public void downloadImage(final String url, final ...

  9. luogu P4512 多项式除法 (模板题、FFT、多项式求逆)

    手动博客搬家: 本文发表于20181206 14:42:53, 原地址https://blog.csdn.net/suncongbo/article/details/84853342 题目链接: ht ...

  10. LightOJ - 1189 - Sum of Factorials

    先上题目 Sum of Factorials Time Limit:500MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...