参加过几个公司的笔试,笔试过程中遇到了这样的一道问题。如何不使用局部和全局变量来实现int strlen(char *p)求字符串的长度。当时想了半天,想到通过指针相减来求解,但是仍然要用到其他的变量来保存。后来在回去的路上,听到有个阿姨给孩子讲故事,说的事从前有座山,山里有座庙,庙里有个老和尚,老和尚给小和尚讲故事,讲的故事是,从前有座山,山里有座庙,庙里有个老和尚,老和尚给小和尚讲故事,讲的故事是……当时感觉很好笑,突然我想到问题的答案了,要是不用其他变量,为何不用递归呢,递归不就是自己调用自己吗,这样不就求的问题的答案了吗。
int strlen(char *p)
{
if(p==NULL)
return 0;
if(p=='\0')
return 0;
else(p!='\0')
return 1+strlen(++p);
}
这样 ,通过调用自身,就实现了求字符串的长度。通过这个例子,我明白了任何事物都是有联系的,任何问题也都是有解决方法的,只要我们抓住问题的实质,就能够answer 。