递归算法:是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数).
1.斐波那契数列
#include <stdio.h>
int fibonacci(int i)
{
int ret = -1;
if(i<0) //判断是否输入有误
{
return ret;
}
else if(i==0 || i==1) //第一.二位返回值
{
return ret = 1;
}
else //大于二进行递归
{
return ret = ( fibonacci(i-1) + fibonacci(i-2) );
}
}
int main()
{
printf("%d\n",fibonacci(-2));
return 0;
}
2.实现strlen函数
#include <stdio.h>
int strlen(char *s)
{
if(s == NULL)
return -1;
else if(*s == '\0')
return 0;
else
return strlen(s + 1) + 1;
}
int main()
{
printf("strlen(\"12345\") = %d\n", strlen("12345"));
printf("strlen(NULL) = %d\n", strlen(NULL));
printf("strlen(\"\") = %d\n", strlen(""));
return 0;
}