问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

谁能帮我解释下c++里的“递归(recursion)”

发布网友 发布时间:2022-12-26 21:12

我来回答

4个回答

热心网友 时间:2023-10-17 04:39

是指函数在运行过程中直接或间接调用自身而产生的现象.

数列就是最常见的递归现象。

如 a1   a2   a3   a4   a5   a6

      1     2                          6

an = a(n-1)   +  1  

比如要求  a6  根据公式 a6  =  a5   +   1

   要求a6 求a5                           a5  =  a4   +   1

   要求a5 必先求a4                        a4  =  a3 + 1       

 直到最后求出    a1 = 1

然后还回  a2   然后 a3  然后 a4  然后 a5  然后 a6  得出结果

递归电脑计算时计算过程比较复杂,但是写的程序却很简单,比如这题

int  Getan( int  i){

   if(i == 1)  return 1;

   return Getan(i-1)  + 1;   //这里每次递归(也就是调用自己(这里是调用Getan(i-1))) 

                       // i会递减 ,  所以最后 i总会等于1, 从而结束递归

} 

/////////////////////////////////////////////

void show_number(char a,int number,int count){

    if(count!=0){

      for(int i(0);i!=3;++i){

          cout<<a;

          show_number(a+1,number-1,count-1);  //这个地方递归  ,注意到这里实参为count-1, 在每一次进入函数时,形参count获得的值比之前少1,  所以最终能够退出递归。

          cout<<number;

  cout<<endl;

  }

     }

 }

//你是问递归的执行顺序吗

//////////////////////////////////////

void nestedtriangle(turtle & worker, double size, int level){

   if(not level) return;               //  level 等于0时结束递归

   for(int i(0); i != 3; ++i){         //每次调用3次自身

      nestedtriangle(worker, size/2, level-1);   //每次level-1,  所以深度为level次

      worker.forward(size);

      worker.left(120);            //这两步调用3次后画出一个三角形

   }

}

//  这里无法贴出两张图片,就用口说吧。

你先想像如果没有递归,讲画出一个边长为size的三角形,为方便叙述,设这个三角形的三个定点为ABC。 因为有了递归,而且递归3次,//注意递归在画边之前

假设level = 2;  

1、在for中 ,i=0时,  调用 nestedtriangle(worker, size/2, 1),  而该函数以A为起点,size/2为边长画出一个三角形, 然后画出变AB。此时worker运动到B点

2、 i=1时,调用 nestedtriangle(worker, size/2, 1),  而该函数以B为起点,size/2为边长画出一个三角形, 然后画出变BC。此时worker运动到C点

3、 i=2时,调用 nestedtriangle(worker, size/2, 1),  而该函数以C为起点,size/2为边长画出一个三角形, 然后画出变CA。此时worker运动到A点, 

4、i=3,结束调用。

从中你可以看出level=2时可以画出2层小三角形,依次类推, level=3时可以画出3层。

不懂加我QQ51321640,注明百度知道_递归

热心网友 时间:2023-10-17 04:39

递归的意思就是一个函数调用本身~就这么简单的~
例子:(输出二叉树的内容)
void OutBitree(Link btree)
{
if(!btree)
return ;
cout<<btree.data;
OutBitree(btree->lchild); // 二叉树的左海子
OutBitree(btree->rchild);
}

热心网友 时间:2023-10-17 04:40

http://tieba.baidu.com/f?kz=537618251

热心网友 时间:2023-10-17 04:41

自己调用自己
谓之 递归
最终的结果回溯
仅此
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...经常感到孤独、万事无聊,请问怎样治疗孤独?谢谢! 移动号码不用了一段时间现在拨号显示空号要怎么激活 圣女小番茄简介 《一曲终人两散》最新txt全集下载 石膏几何体写生内容简介 石膏几何体内容简介 句子: We mustn't climb the trees.怎么填空? 市妇婴医院生产点样建档? 长治怀孕建档要准备什么材料呢? 工厂隔音房 做事永远无头无尾?人生中的递归现象 四色问题是递归现象吗 3D, 想转行做3D 28岁,女 请求指教 那些职称不限专业? 吉克隽逸身价多少亿 鹌鹑蛋有哪些营养价值喃? 为什么要搞疏散演习? 两个怎么同时登录 抖音直播电影教程及方法 一个人在家叙事作文 《大拌菜》的制作方法,需要的材料以及步骤、调味料。请详细的例举。 教师资格的丧失的条件? 撤销教师资格证的条件? 无线路由器设定穿墙的方法步骤 云记电脑版怎么下载 淘金云电脑版怎么下载 手机上五天买菜赚钱是真的吗 网上做 *** 淘宝买东西提佣金是真的吗 霸王大陆魏延可以装备关王刀吗 fc三国志2关王刀 蛇矛 狼牙棒 圣者之衣怎么得到 菊粉用什么水冲服好 10克菊粉放多少水冲 怎样在家制作冰激凌?(材料简单) 关于推广的诗句 手机怎么下载 解读《孔乙己》 作者对孔乙己的动作描写最精彩的是哪几个片段 怎样设置OPPO微信铃声 72V-84V限流40A 控制器可以压96V电瓶吗 令人心动的英文句子 让人动心的爱情英语短句 永不放弃作文800字 2022新创的没有银行卡怎么实名认证? 等差数列前n项和为Sn,S10=31,S20=122,则S30=? 已知等差数列(an)的前n项和为sn,若s15=90,s30=-270,求该数列前n项和sn的最大值,并求出sn取 等差数列中an的前n项和为Sn若S30=50 S50=30求S80 海肠子如何做好吃 一天销售口罩305盒,一个星期大约销售多少盒 我手机进水后开机要1分30秒,原来只要20多秒,是不是主板坏了 孔雀会飞多少公里?