递归函数的深入理解,很多人的理解误区

很久没时间发笔记了,这次抽空 sky(我的昵称) 再为大家讲解一个东东,讲的不好之处大神勿喷哈

#include<iostream>
using namespace std;
void bin(const unsigned int &i)
{
    
    if (i/2)
        bin(i/2);
    cout << i%2;
}

int main()
{
    int a;
    cin >> a;
    bin(a);
    cout << endl;
    return 0;
}
这是一个求一个数的二进制的程序,
对于这样的递归函数大家肯定不陌生,但是相信很多人还是不清楚它的执行过程吧,或者误以为自己想的是对的,下面我将为大家解答:
      递归函数是如何结束的呢?就是递归函数结束的标志,在本程序中,递归函数结束的标志就是if(i/2)为假,
则递归函数结束。
      程序执行是这样的,如果传进来的数是6,那么第一次if()判断为真,则执行bin(i/2),执行完后还会执行cout << i%2;不过这一句只是將它入栈了,不会在屏幕上面输出,这样才是递归函数第一次进行递归,第二次进入的时候会把第二次的cout << i%2;入栈,以此类推,直到当判断到if()为假的时候,这时递归才会结束,此时开始出栈,栈是先进后出,所以才是先输出最后执行的cout << i%2;
       很多人都认为第一次执行bin()的话就不会执行cout << i%2;了,这样的理解是错误的,因为递归就是在反复地调用函数本身,调用函数就是一个入栈的过程,如果实在不理解的话大家可以把程序反汇编一下看下编译器执行的过程就知道了。

 

欢迎与本人交流

 

新浪博客:http://blog.sina.com.cn/u/2049150530
csdn博客:http://blog.csdn.net/u011749143
博客园:http://www.cnblogs.com/sky-heaven/

 

新浪微博:张昺华--sky

 

时间: 2024-10-12 03:20:03

递归函数的深入理解,很多人的理解误区的相关文章

过分依赖和沉迷于网络可能降低人的理解和认知能力

http://www.aliyun.com/zixun/aggregation/35043.html">克罗地亚研究人员最近发现,过分依赖和沉迷于网络,可能降低人的理解和认知能力.克罗地亚奥西耶克大学哲学院在对超过1000名公民的跟踪调查表明,网络化的生活方式正在为大众接受,由此带来的问题正在显现. 调查发现,有44%的克罗地亚人在过去一年内没有读过一本纸质书,而把时间花费在互联网上.连电子书都没有读过的人超过20%.尽管网络为阅读电子书带来了方便,但大多数受访者表示,由于用电脑和手机长时

选择决定距离 SEO服务很多人赢在起点

大家好,我是虚子雨.对于SEO服务,每个SEO公司,每个SEO团队,或者说每个在一线的SEO工作人员来说,我们更注重的可能更多是SEO技术,每天花大量的时间来研究技术,运用技术,却对于服务却不太重视,这是一个大环境的问题,也是很多个人的意识问题,要想改变这样的一种状态一定要从自身出发,从营销的角度出发,而不仅仅把自己当做一个技术人员去做SEO,营销讲究转化,而如果我们能够选择做好服务,提高用户体验,仅仅是有这样的一个思维,然后认真地去执行这个想法,那么你就比别人胜在了起点上.所以在开始,我要给大

很多人都在埋怨没有遇到好的团队,但好的团队不可能凭空出现,一流的团队不能仅靠团队成员努力,作为Leader,要有可行的规划,并坚定地执行、时势地调整(转)

  <西游记>中的唐僧团队历经千难万险,终于求得真经,目标明确.分工合理为这支队伍最终走向成功奠定了基础.唐僧从一开始,就为这个团队设定了西天取经的目标,虽然经历各种挫折与磨难,但目标从未动摇.悟空探路.八戒牵马.沙僧挑担,几位徒弟一起肩负着保护唐僧的任务.虽然性格迥异.各有缺点,但目标分解合理及成员分工合作,最终风雨同舟,取得真经. <西游记>的故事引申到实际团队技术管理中,也一样有借鉴意义,本文作者为CTO俱乐部会员.湖北同城一家网络科技有限公司开发总监杨斌,他结合自己多年经历

很多人真的不了解MSN

摘要: 江湖传言MSN穷途末路,但刘振宇付诸一笑.如果不耐心聆听,恐怕很多人都难以理解:为什么在一片唱衰声中,MSN中国反而年年保持利润增长,乃至成为今天在中国市场唯一活得滋润的 江湖传言MSN穷途末路,但刘振宇付诸一笑.如果不耐心聆听,恐怕很多人都难以理解:为什么在一片唱衰声中,MSN中国反而年年保持利润增长,乃至成为今天在中国市场唯一活得滋润的国外互联网企业. "现在我知道什么叫'众口铄金'了.大家都在关心MSN,但很多人真的不了解MSN".微软MSN(中国)总经理刘振宇说. 刘振

微商最近很火,很多人把通过微信开个小店就当成了微商

微商最近很火,很多人把通过微信开个小店就当成了"微商",并且与淘宝相提并论,俨然自成一派.实际上,微商并非"微信电商",更不是仅仅指微信小店,微商指的是在移动终端平台上借助移动互联技术进行的商业活动,或者简单的指为通过手机开店来完成网络购物. 不是只有网购才叫电商,但电商却被理解成了网购 从广义来讲,电子商务包罗万象,只要是通过电子化的手段进行交易就可以称为电子商务,而一般来理解的电子商务也许仅仅指的是网购.如果说广义,那绝大多数的互联网公司都是电子商务公司,但我们

尤金·卡巴斯基:我很疑惑为什么很多人仍在使用Windows XP

卡巴斯基老板尤金卡巴斯基对WannaCry勒索软件横行全球发表了他的看法.尤金卡巴斯基表示,他不明白为什么还有很多人仍在使用Windows XP?因为如果他们有数以百计的PC,处理所有这些麻烦代价都是非常昂贵.尤金卡巴斯基对整个情况感到困惑. 他补充说,为了防止这些类型攻击,小企业比大企业要容易得多.他们只需要拥有最新的操作系统,备份系统而且必须拥有安全解决方案,这些都并非难事.但是对于大型企业而言的,事情要复杂得多,,特别是考虑到在野外使用XP系统的数量.为了取代旧系统,大型企业需要适当的预算

很多人太着急的去爱了,因而忽略了自己是否具有去爱的能力

当你爱一个人的时候,你不但要与所爱之人好好相处,还要学会与自己愉快地相处. 这是个大家都明白但是又都容易忽视的道理. 周先生曾经和我说过永恒的孤独的问题,现在我觉得这就是答案.即使是面对永恒的不可避免的孤独,我们还是可以选择与自己愉快地相处,而这种相处是不分场合和单身与否的. 苦水倒多了,只会让你对这个世界的负面印象更加深刻:鸡汤喝多了,你要么把你没经历过的世界想得太温柔要么把你经历过的世界想得太残忍:洗澡洗多了,你总觉得你可以用一个爱人去洗涤你一生的迷茫. 其实,不是这样的. 你只要微笑着接受

今天很多人都会说自己在做O2O产品

今天很多人都会说自己在做O2O产品.当追问到底什么O2O,他们会回答把某个线下的东西搬到线上了去销售.再细看他们的产品,你会明白,其实就是缩小版.本地化的淘宝. 开发一个平台,然后让商户在平台发布自己的产品,提供支付功能,采取点促销措施,提高性价比,提高用户的消费欲望与增加平台流量,产生交易.O2O到底是什么? O2O其实就是一个赋予一定含义的互联网行为概念名词.它不是某种单一或是几个关联因素的组合产品或服务.既然只是个概念名词,它本身并不能该给你带来什么实际的帮助.因为这个名词的时髦,结果自己

很多人感觉360公司跟其他互联网公司不一样

很多人感觉360公司跟其他互联网公司不一样,那是因为360与传统企业甚至一些互联网同行有着不一样的价值观."任何社会的产业形态都有分工,不应该由 一家企业完全包揽.我们要做的,第一是在自己擅长的领域做到最好:第二是保持对世界的好奇,能够不断地做出一些创新的东西,甚至是一些看起来不一定有什么 商业价值,但是很好玩.很酷的东西."360公司董事长周鸿祎坚信,先有用户价值才有商业价值.在对互联网思维的理解趋向多元化的今天,让我们来听听他的解读. 互联网更重视用户.体验.免费和创新 记者:你认