递归函数和递归调用

阅读量: 176 编辑

函数自己调用自己,就叫做函数的递归调用。

void shuChu(int i){
	cout << "输出内容的函数" << i << endl;
	
	//自己调用自己,就是递归
	shuChu(i);
}

int main(){
	shuChu(100);
}

在递归调用的时候,要特别注意递归的终止,如果没有终止,那么函数会无限的递归调用下去,类似死循环一样。

一、递归要素

所以,如果一个函数是递归函数,那么一定要注意两点:

1、终止条件:递归停止条件,否则会无线循环;

2、递归条件:函数调用自己的条件;

void shuChu(int i){
	cout << "输出内容的函数" << i << endl;
	
    i--;
    if(i < 0){ //递归停止条件
        return ; //终止递归
    }else{
        //自己调用自己,就是递归
		shuChu(i);
    }
}

int main(){
	shuChu(100);
}

二、代码案例

输入一个数字 n ,计算 1 到 n 的和。

// for 循环求和
int qiuHe(int n){
    int a = 0;
	for(int i = 1; i <= n; i++){
        a = a + i;
    }
    return a;
}

也可以使用递归实现

int qiuHe(int n){
    int t = 0;
    
    if(n == 1){
    	return 1;
    }else{
        t = n + qiuHe(n-1);
    }
    
    return t;
}

//main函数
int main(){
    int a = qiuHe(5);//开始调用递归函数
    return 0;
}

函数调用过程,在main函数中调用 qiuHe(5);

qiuHe(5) = 5 + qiuHe(4);

qiuHe(4) = 4 + qiuHe(3);

qiuHe(3) = 3 + qiuHe(2);

qiuHe(2) = 2 + qiuHe(1);

也就是:5 + 4 + 3 + 2 + 1

调用的时候,是从上往下依次调用,当到 qiuHe(1) 时直接返回的是 1,所以到这里就终止了,然后把这个值依次向上返回,进行相加。

可以使用 for 循环的地方通常也可以使用递归来解决,有的使用for循环更方便,有的使用递归更简洁。

爱码岛编程公众号
微信扫码关注
爱码岛编程小程序
微信扫码打开
苏ICP备13052010号
©2023 南京匠成信息科技有限公司