éåºè¾åºæå¾å¤ç§ï¼å
·ä½çå®ç°æ¹æ³åå³äºä½ é¢ç®çè¦æ±
1. å¦æåªæ¯è¦æ±éåºè¾åºï¼é£ä¹å¯ä»¥éç¨ç±»ä¼¼çæ¹æ³:
void reverse(char *s)
{
if(*s=='\0')
return;
reverse(s+1);
printf("%c",*s);
}
è¿ç§æ¹æ³å¨så¾é¿çæ
åµä¸ä¼ä¸ç´éå½å°åºï¼ä¸æ¯å¾å¥½ã
2. å¦æéè¦å°å符串æ´ä¸ªéåºå¨å½æ°å¤é¢è¾åºï¼é£ä¹å¯è½å¸æéç¨è¿åå符串æéçæ¹å¼;å®ç°å¦ä¸ï¼
char * reverse( char* s )
{
static char *p = s+strlen(s)-1; //pæ¯ä¸ä¸ªéæåéï¼æåå½åéå½å±å¤ççå符串尾ï¼èsæåå符串头
if(s < p)
{
ããchar c = *p; //交æ¢å¤´å°¾å符
ã *p = *s;
ã*s = c;
p--; //å°¾ååæªä¸ä¸ª
reverse(s+1); //ç¸å½äºå¤´ååæªä¸ä¸ª
}
return s;
}
3.1 å½ç¶ï¼æçæ¶åï¼å¹¶ä¸éè¦reverseå½æ°æ¬èº«éå½ï¼èæ¯å¯ä»¥åå©ä¸äºè¾
å©çéå½å½æ°ï¼æ¯å¦è¯´:
void reversehelp(char * head, char * end)
{
if (head < end)
{
char c = *head;
*head = *end;
*end = c;
reversehelp(++head, --end);
}
}
ç¶åå¨è°ç¨æ¶åè¿æ ·è°ç¨:
char * reverse(char * s)
{
char * end = s + strlen(s) - 1;
reversehelp(s, end);
return s;
}
3.2 类似çè¾
å©å½æ°è¿å¯ä»¥éç¨ä¸ä¸ªå符串æéåä¸ä¸ªé¿åº¦åæ°çæ¹å¼ï¼å¦ä¸ä¾:
void reversehelp( char* s, int n )
{
if ( n > 1 )
{
char c = s[n-1];
s[n-1] = s[0];
s[0] = c;
reversehelp( s+1, n-2 );
}
}
ç¶åå¨è°ç¨æ¶å¦ä¸:
char *reverse(char *s)
{
reversehelp( s, strlen(s) );
return s;
}
温馨提示:答案为网友推荐,仅供参考