今日某ACM群上某君出了一道颇不寻常的题:“如何写一个递归函数reverse(char* s)来使s倒序?”
不寻常的题自然应该用不寻常的解法,我即兴写了一个:
char* reverse(char* s,int i=0){
char c=s[i];
return c ? &(*reverse(s,i+1)=c)+1 : s;
}
两行“搞掂”,是不是很好玩呢?
你有没有更简洁或者更特别的算法?欢迎一齐探计~~
P.S.:本人觉得唯一的美中不足是它虽然可以按reverse(char* s)来调用,但毕竟实际上的原型是char* reverse(char* s,int i=0),不过我基本可以肯定不可能使用单形参在O(n)时间内解决本问题。
posted on 2007-01-01 01:17
踏雪赤兔 阅读(1626)
评论(9) 编辑 收藏 引用 所属分类:
玩转编程