-6
我想給Strrchr寫遞歸函數,但我想不出這個問題的算法。我如何編寫遞歸Strrchr?如何寫遞歸Strrchr?
我想給Strrchr寫遞歸函數,但我想不出這個問題的算法。我如何編寫遞歸Strrchr?如何寫遞歸Strrchr?
#include <stdio.h>
char *StrrchrR(const char *s, int c, char *find){
if(s==NULL) return NULL;
if(*s == '\0') return (c == '\0') ? (char*)s : find;
return StrrchrR(s + 1, c, *s == c ? (char*)s : find);
}
char *Strrchr(const char *s, int c){
return StrrchrR(s, c, NULL);
}
/*
char *Strrchr(const char *s, int c){
char *ret;
if(s == NULL)return NULL;
if(*s=='\0') return (c == '\0') ? (char*)s : NULL;
if(ret = Strrchr(s + 1, c)) return ret;
if(*s == c) return (char*)s;
return NULL;
}
*/
int main(void){
const char *str = "abcabdefg";
char *cp;
cp=Strrchr(str, '\0');
printf("%c\n", *--cp);//g
cp=Strrchr(str, 'b');
printf("%c\n", *++cp);//d
cp=Strrchr(str, 'z');
if(!cp)printf("NULL\n");//NULL
return 0;
}
你需要考慮更多:( – Maroun 2013-05-05 20:15:38
你想實現strrchr()作爲遞歸函數嗎?這甚至是有意義的嗎? – 2013-05-05 20:23:29