问答题
在C语言中字符串可以用字符指针来表示,字符串的长度隐含在字符指针所指的字符数组中,通过特殊的字符'\0'判定。写一个递归算法,以字符指针为参数,在屏幕上打印它反转后得到的字符串。
【正确答案】(1)思路
先递归调用本算法,反转打印除第一个字符外的字符串,再打印出第一个字符即可。
(2)算法
void printReVString(char*s){
if(s[0]=='\0')return; /*空串*/
if(s[1]=='\0')putchar(s[0]); /*只有一个字符,直接打印*/
else{
printRevString(s+1); /*反转打印除第一个字符外的字符串*/
putchar(s[0]); /*打印第一个字符*/
}
}
(3)代价分析
设n为字符串的长度。该算法访问每个字符各一次,时间代价为O(n)。
【答案解析】