递归函数的写法(以strcpy函数为例)
1. 递归函数模板
递归的前提是,找到一个公共子问题(或公共操作),然后将该函数构造为递归函数。
retType function( ... )
{
结束条件
{
[处理]
返回
}
递归条件
{
[处理]
递归调用function( ... )
[处理]
}
返回
}
2. Example
strcpy函数(非递归版)
1 char * strcpy(char *dst,const char *src) 2 { 3 assert(dst != NULL && src != NULL); 4 5 char *ret = dst; 6 7 while ((*dst++=*src++)!='\0'); 8 9 return ret; 10 }
strcpy函数(递归版)
1 char* strcpy(char* dst, const char* src) 2 { 3 if(*src=='\0') 4 { 5 *dst='\0'; 6 return dst; 7 } 8 char* ret=dst; 9 if(*src!='\0') 10 { 11 *dst++=*src++; 12 strcpy(dst,src); 13 } 14 return ret; 15 }