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

2024-12-18 02:25:22
推荐回答(4个)
回答1:

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

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

如 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<

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

          cout<

  cout<

  }

     }

 }

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

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

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,注明百度知道_递归

回答2:

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

回答3:

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

回答4:

自己调用自己
谓之 递归
最终的结果回溯
仅此