递归

函数递归

程序调用自身的编程技巧称为递归(recursion)。
递归做为一种算法在程序设计语言中广泛应用。一个国产或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化未一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大减少了程序的代码量。
递归的两个必要条件:

  • 存在限制条件,当满足这个限制条件的时候,递归便不再继续。
  • 每次递归调用之后越来越接近这个限制条件。
//递归打印int型多位数的每位
void recursionNum(int num){
	if(num>9){//如果num大于9,那么它就是两位数
		recursionNum(num/10);//将该数除10,得到的是个位之前的数,再将该数放入该函数中,再次调用
	}
	printf("%d\t",num%10);//打印每位数
}
int main(){
	recursionNum(1234);
	return 0;
}
//1  2  3  4 

不创建变量用递归实现strlen()。

int my_strlen(char* str){//str:地址 *str:数组首位的值
	if(*str != '\0'){//首位是否是\0
		return my_strlen(str+1)+1;//如果不是,地址+1,移向下一位,再调用该函数,然后返回值+1
	}
	else
		return 0;
}

递归算阶乘
1*2*3...*n

int factorial(int n){
	if(n<=1){
		return 1;
	}
	else{
		return n * factorial(n-1);
	}
}

递归算斐波那契数
1,1,2,3,5,8,13,21,34,55...

int Fib(int n){
	if(n<3){
		return 1;
	}
	else{
		return Fib(n-1)+Fib(n-2);
	}
}
posted @ 2022-06-16 22:06  青眼高歌  阅读(38)  评论(0)    收藏  举报