函数递归:程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
1. 子问题须与原始问题为同样的事,且更为简单;
2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。
直接上具体题目讲解:
请打印出数字的每一位
例子:输入:1234
输出:1 2 3 4
#include<stdio.h>
void print(int x){
if(x > 9) print(x / 10);//if(x > 9) 为递归结束条件
printf("%d ",x % 10);
}
int main()Z
{
print(1234);
return 0;
}
画个图理解一下:
函数是存放在栈中的
栈:先进后出
不使用临时变量,求字符串长度
#include<stdio.h>
int my_strlen(char* str){
if(*str != '\0') return 1 + my_strlen(str + 1);
else return 0;
}
int main()
{
char str[] = "Hello";
printf("%d",my_strlen(str));
return 0;
}