递归
递归是什么?
简单来说,就是函数自己调自己的一种方法。
通常可以把一个大型复杂的问题转化为一个与原问题相似的规模较小的问题来求解。
递归的两个必要条件:
- 限制条件,必须存在一个递归出口,当满足这个条件时,递归便不再继续。
- 每次递归之后都将问题规模缩小化,并且越来越接近这个限制条件。
以下用几个实例来说明:
题目一:接受一个无符号整数,把它转化为字符并打印它。
void Print(int n)
{
if (n > 9)
{
Print(n / 10);
}
printf("%d ", n % 10);
}
int main()
{
int num = 0;
printf("please input a num:");
scanf("%d", &num);
Print(num);
system("pause");
return 0;
}
这个问题用递归的方法去思考,打印1234,实际上就是打印
1+(234)
1+2+(34)
1+2+3+(4)
题目二:不允许创建临时变量,求字符串的长度
int Mystrlen(const char* str)
{
if (*str == '\0')
return 0;
else
{
return (