最近听到的两道面试、笔试题,感觉挺有意思的:
1。实现库函数strlen,不能使用任何库函数,不能定义任何变量。
2。实现函数strrev,该函数有两个参数,将其中一个字符串逆序放到另一个字符串指针中,同样要求不能使用任何库函数,不能定义任何变量。
采用递归实现,刚好可以满足这两道题的要求:
strrev这个函数,本来要求两个参数都是char *类型的,但我没想到解决办法,倒是用char **可以,不过这样把目的串实参的指针值给改变了,另外最后还得加个'/0'。
当然这两个函数这样写效率不一定高,但采用递归的方法确实挺有意思的。
1。实现库函数strlen,不能使用任何库函数,不能定义任何变量。
2。实现函数strrev,该函数有两个参数,将其中一个字符串逆序放到另一个字符串指针中,同样要求不能使用任何库函数,不能定义任何变量。
采用递归实现,刚好可以满足这两道题的要求:
- void strrev(char **dest, const char *src)
- {
- if(*src == '/0')
- return;
- else
- {
- strrev(dest, src+1);
- *(*dest)++ = *src;
- }
- }
- int strlens(const char *src)
- {
- if(*src != '/0')
- return strlens(++src)+1;
- else
- return 0;
- }
当然这两个函数这样写效率不一定高,但采用递归的方法确实挺有意思的。