递归函数:递归函数即自调用函数,在函数体内部直接或间接地自己调用自己,即函数的嵌套调用是函数本身。

函数调用机制的说明  
    任何函数之间不能嵌套定义, 调用函数与被调用函数之间相互独立(彼此可以调用)。 发生函数调用时,被调函数中保护了调用函数的运行环境和返回地址,使得调用函数的状态可以在被调函数运行返回后完全恢复,而且该状态与被调函数无关。   
    被调函数运行的代码虽是同一个函数的代码体,但由于调用点,调用时状态, 返回点的不同,可以看作是函数的一个副本,与调用函数的代码无关,所以函数的代码是独立的。被调函数运行的栈空间独立于调用函数的栈空间,所以与调用函数之间的数据也是无关的。函数之间靠参数传递和返回值来联系,函数看作为黑盒。   
    这种机制决定了C/C++允许函数递归调用。

递归函数要明确函数的出口

实例:

#include<stdio.h>
#include<string.h>
void zhuanhua(char* s,int shuzi,int jinzhi);
int main()
{int shuzi,jinzhi;char s[30];printf("请输入要转化的十进制数字:");scanf("%d",&shuzi);printf("要转化的进制:");scanf("%d",&jinzhi);zhuanhua(s,shuzi,jinzhi);printf("转化后:%s\n",s);scanf("%d",&shuzi);return 0;
}
void zhuanhua(char* s,int shuzi,int jinzhi)
{char bit[]={"0123456789ABCDEF"};int len=0;printf("len1:%d\n",len);if(shuzi==0){strcpy(s,"");return;}zhuanhua(s,shuzi/jinzhi,jinzhi);      //层层递归,进行压栈操作//下面开始进行出栈操作len=strlen(s);                        s[len]=bit[shuzi%jinzhi];             s[len+1]='\0';printf("%s\n",s);printf("len2:%d\n",len);
}

【算法学习】递归函数的使用相关推荐

  1. 数据结构与算法学习笔记——链栈

    数据结构与算法学习笔记(C语言) 链栈 在开始链栈的学习之前,我们先实现一下上一篇文章中提到的检查括号匹配的小程序,鉴于水平有限,本人就随便写一下代码好了,目标仅限于对功能的实现. /*用顺序栈这种数 ...

  2. 数据结构与算法学习⑤(BFS和DFS 贪心算法 二分查找)

    数据结构与算法学习⑤ 数据结构与算法学习⑤ 1.BFS和DFS 1.1.深度优先搜索算法 1.2.广度优先搜索算法 面试实战 102. 二叉树的层序遍历 104. 二叉树的最大深度 515. 在每个树 ...

  3. 算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记

    算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记 前言 哈希表 哈希操作 冲突处理 开放定址法 再哈希法 公共溢出区 链式地址法 扩容哈希表 设计简易哈希表 总结 布隆过滤器 对比 ...

  4. 算法学习 (门徒计划)3-3 深搜(DFS)与广搜(BFS)及经典问题 学习笔记

    算法学习 (门徒计划)3-3 深搜(DFS)与广搜(BFS)及经典问题 学习笔记 前言 深搜与广搜 搜索的核心概念 问题求解树 搜索剪枝和优化 问题求解树的状态 对比深搜与广搜 DFS-深度(deep ...

  5. 拿下斯坦福和剑桥双offer,00后的算法学习之路

    董文馨,00后,精通英语,西班牙语.斯坦福大学计算机系和剑桥大学双Offer,秋季将进入斯坦福大学学习. 10岁开始在国外上学:12岁学Scratch: 13岁学HTML & CSS: 14岁 ...

  6. 好久没有看到这么有建设性德文章,由衷地赞叹《知其所以然地学习(以算法学习为例)》-By 刘未鹏(pongba)

    知其所以然地学习(以算法学习为例) By 刘未鹏(pongba) C++的罗浮宫(http://blog.csdn.net/pongba) Updated(2008-7-24):更新见正文部分,有标注 ...

  7. 原创 | 初学者友好!最全算法学习资源汇总(附链接)

    在计算机发展飞速的今天,也许有人会问,"今天计算机这么快,算法还重要吗?"其实永远不会有太快的计算机,因为我们总会想出新的应用.虽然在摩尔定律的作用下,计算机的计算能力每年都在飞快 ...

  8. 基本算法学习(一)之希尔排序(JS)

    参考书: 严蔚敏-数据结构 希尔排序(Shell's Sort) 希尔排序又称"缩小增量排序",归属于插入排序一类,简单来说,和我们的插入排序比,它更快. 奇妙的记忆点: 内排序( ...

  9. 大顶堆删除最大值_算法学习笔记(47): 二叉堆

    堆(Heap)是一类数据结构,它们拥有树状结构,且能够保证父节点比子节点大(或小).当根节点保存堆中最大值时,称为大根堆:反之,则称为小根堆. 二叉堆(Binary Heap)是最简单.常用的堆,是一 ...

  10. Surf算法学习心得(一)——算法原理

    Surf算法学习心得(一)--算法原理 写在前面的话: Surf算法是对Sift算法的一种改进,主要是在算法的执行效率上,比Sift算法来讲运行更快!由于我也是初学者,刚刚才开始研究这个算法,然而网上 ...

最新文章

  1. 科研文献|圈养和类人猿微生物组的共同多样化
  2. jQuery的淡入和淡出简单介绍
  3. php广告任务网源码_THINKPHP仿我爱广告任务网|任务网站源码下载基于PHP+MYSQL的在线广告打码任务网站源码...
  4. pcl里面使用KdTree来搜索
  5. C 语言中,x += 5 == 4 是什么意思?
  6. 兼容所有浏览器的设为首页收藏本站js代码,推荐使用
  7. P1217 [USACO1.5]回文质数 Prime Palindromes(技巧+暴力枚举+线性筛)
  8. 离散数学及其应用 第二章:计数问题
  9. 新版bscroll轮播图无缝切换
  10. 华为终端穿戴软件测试,【华为终端测试面试】说说群面,可谓是 最...-看准网...
  11. 《腾讯传》六、“红衣大炮”轰杀“狗日的腾讯”—3Q大战
  12. 抖音推独立社交产品“多闪” 主打视频社交PK微信
  13. newton插值公式
  14. python3 面向对象_傻瓜式学Python3——面向对象
  15. 希尔排序Linux下c 实现
  16. UVA207 ac心得
  17. Eigrp恶意插入路由和致瘫攻击测试(一)
  18. 达观数据超自动化机器人实践分享 | 达观数据产品总监邵万骏
  19. layui 登录页面样式+短信接口
  20. 【Unity3D游戏开发学习笔记】(七)上帝之眼—第三人称摄像机的简单实现(跟随视角,自由视角)

热门文章

  1. 编程模拟自然(九):元胞自动机
  2. 计算机二级没过电网网申会被刷吗,江苏电网网申——为什么研究生学历的同学网申都过不了!...
  3. 一行命令实现Java项目启动停止和重启
  4. 面试题目总结(1) https中间人攻击,ConcurrentHashMap的原理 ,serialVersionUID常量,redis单线程,
  5. 百度作业帮 生成随机红包算法
  6. 【c语言·镂空三角形】
  7. 单张PPT转成单张PDF的PDF文件怎么设置打印出一页纸有6页PPT
  8. Pix2Pix原理解析以及代码流程
  9. 如何打开mysql odbc数据源_mysql是如何配置ODBC数据源的方法
  10. Elasticsearch笔记基础入门