递归函数的写法(以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++)!='');
 8 
 9     return ret;
10 }

  strcpy函数(递归版)

 1 char* strcpy(char* dst, const char* src)
 2 {
 3     if(*src=='')
 4     {
 5         *dst='';
 6         return dst;
 7     }
 8     char* ret=dst;
 9     if(*src!='')
10     {
11         *dst++=*src++;
12         strcpy(dst,src);
13     }
14     return ret;
15 }
原文地址:https://www.cnblogs.com/jmliao/p/8533786.html