发布网友 发布时间: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
递归的意思就是一个函数调用本身~就这么简单的~热心网友 时间:2023-10-17 04:40
http://tieba.baidu.com/f?kz=537618251热心网友 时间:2023-10-17 04:41
自己调用自己