当前位置: 首页 > news >正文

深圳网站优化多少钱塘沽网

深圳网站优化多少钱,塘沽网,德州最新通告今天,网站设计文献#x1f680; 作者#xff1a;阿辉不一般 #x1f680; 你说呢#xff1a;生活本来沉闷#xff0c;但跑起来就有风 #x1f680; 专栏#xff1a;爱上C语言 #x1f680;作图工具#xff1a;draw.io(免费开源的作图网站) 如果觉得文章对你有帮助的话#xff0c;还请… 作者阿辉不一般 你说呢生活本来沉闷但跑起来就有风 专栏爱上C语言 作图工具draw.io(免费开源的作图网站) 如果觉得文章对你有帮助的话还请点赞关注收藏支持博主如有不足还请指点博主及时改正感谢大家支持 文章目录 前言什么是函数递归函数递归的必要条件 用递归求n的阶乘青蛙跳台阶问题斐波那契数列什么是栈溢出 前言 大家好啊今天阿辉将为大家介绍C语言中的函数的递归✍包括什么是函数递归函数递归的必要条件青蛙跳台阶问题斐波那契数列以及栈溢出问题内容干货满满接下来就跟着阿辉一起学习吧 什么是函数递归 函数递归简单来说就是函数自己调自己。 递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明 中有直接或间接调用自身的一种方法它通常把一个大型复杂的问题层层转化为一个与 原问题相似的规模较小的问题来求解递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算大大地减少了 程序、的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说递 归需要、有边界条件、递归前进段和递归返回段。当边界条件不满足时递归前进当 边界条件满足时递归返回。函数递归的必要条件 递归存在限制条件当满足限制条件时函数便不再不在递归下去了每一次递归后都会逐渐接近这个限制条件 这两个条件是必要的否则将陷入死递归 我们来看个例子 #includestdio.hint main() {printf(hallo c !\n);main();return 0; }上面这段代码你在VS上调试的话就会报错 栈溢出是什么别急后面会讲我们接着看 用递归求n的阶乘 5! 5*4*3*2*1 4! 4*3*2*1 3! 3*2*1 2! 2*1 1! 1 0! 1 我们看出求 5!可以变成求 5*4! 而4! 4*3! 3! 3*2! 2! 2*1!以此类推由上图我们把青蛙跳台阶抽象成下面这个模型 把n的阶乘记作Fac(n) 由上图我们可以写出n的阶乘的函数递归代码 int Fac(int n) {if (n 2)return 1;elsereturn n * Fac(n - 1); } int main() {int n 0;scanf(%d, n);int a Fac(n);printf(%d\n, a);return 0; }青蛙跳台阶问题斐波那契数列 一只青蛙一次可以跳上 1 级台阶也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法 上图我们可知青蛙跳n次台阶的跳法可以分成青蛙跳(n - 1)次台阶的跳法加上青蛙跳(n - 2)次台阶的跳法 而青蛙跳(n - 1)次台阶的跳法又可以分成青蛙跳(n - 2)次台阶的跳法加上青蛙跳(n - 3)次台阶的跳法 … 以此类推由上图我们把青蛙跳台阶抽象成下面这个模型 把青蛙跳n次台阶的次数记作Fib(n) 上图其实也就是斐波那契数列得到的方法只不过斐波那契数列前两个数都是1 由上图我们可以写出青蛙跳台阶的函数递归代码 #includestdio.h int Fib(int n) {if (n 3)return n;elsereturn Fib(n - 1) Fib(n - 2); } int main() {int n 0;scanf(%d, n);int a Fib(n);printf(%d\n, a);return 0; }虽然递归能以很少的代码量解决复杂的问题但是如果递归程度太深递归次数太多将导致效率低下甚至栈溢出 上述n的阶乘以及青蛙跳台阶都可以用迭代的方式去写效率更高利用的栈内存更小 迭代版本n的阶乘以及青蛙跳台阶奉上 n的阶乘 int Fac(int n) {int i 0;int ret 1;for (i 1; i n; i){ret * i;}return ret; } int main() {int n 0;scanf(%d, n);int a Fac(n);printf(%d\n, a);return 0; }青蛙跳台阶: int Fib(int n) {int a 1;int b 2;int c 0;if (n 3)return n;while (n - 2){c a b;a b;b c;n--;}return c; } int main() {int n 0; scanf(%d, n);int a Fib(n);printf(%d\n, a);return 0; }什么是栈溢出 栈又称堆栈是一种具有一定规则的数据结构它按照先进后出的原则存储数据先存的元素放在栈底后存的元素在栈顶。 栈区存放函数参数以及局部变量等。内存由编译器分配和释放。 那么栈溢出又是什么呢 栈溢出是指向向栈中写入了超出限定长度的数据溢出的数据会覆盖栈中其它数据从而影响程序的运行 而递归每调一次函数都会向栈区申请一块内存空间如果死递归或者递归层次太深都会导致栈溢出。 SO递归虽好可不要贪杯啊 到这里阿辉今天对于C语言函数递归的分享就结束了希望这篇博客能让大家有所收获, 如果觉得阿辉写得不错的话记得给个赞呗你们的支持是我创作的最大动力
http://www.yutouwan.com/news/465111/

相关文章:

  • 嘉兴网站制作套餐wordpress加载优化
  • 企业网站建设需求分析注册网站费用
  • 徐州市中宇建设工程有限公司网站网站开发属于软件设计嘛
  • django网站开发教程合同范本的网站
  • SEO案例网站建设公司小程序公司排名前十
  • 网站开发的缓存技术专门做进口产品的网站6
  • 建设网站考证今天重大新闻乌克兰
  • 免费设计商标的网站万户做网站怎么样
  • 介绍做茶工艺的网站休闲农庄展示网站
  • 东莞做网站排名优化推广php网站微信登录怎么做
  • 苏州专业高端网站建设公司做网站标题代码
  • 做网站属于什么行业郑州哪家公司做网站
  • 给设计网站做图会字体侵权吗济宁网站建设吊装
  • 网站开发招聘信息wordpress文章图片显示不出来
  • 阜阳市重点工程建设局网站计算机应用技术网站建设
  • 网站移动页面怎么做咨询类公司网页设计
  • 网站多套系统如何调用域名注册信息查询whois
  • 江苏省建设执业资格注册中心网站科技创新论文800字
  • 建设网站的运行费包括什么地方入侵网站怎么做弹出
  • 免费的推广软件下载优化网络速度
  • 电子商务网站推广方法和技巧中国空间站航天员
  • 188旅游网站管理系统6.0模板网站更换名称需要重新备案吗
  • 手机上装修设计软件百度推广优化是什么?
  • 装饰工程 技术支持 东莞网站建设企业为什么要做网站
  • 网站的开发是使用什么技术农业电商网站建设
  • 网站没有建设好可以备案吗做网站创业故事
  • 网站好坏怎么分析网页设计居中代码
  • 连锁酒店网站建设公司高权重网站发外链
  • 织梦网站栏目访问目录相亲网站拉人做基金
  • 旅游景点网站建设毕业设计说明网站开发用技术