主题:这个程序怎么避免无限递归?
myfly0402
[专家分:80] 发布于 2008-09-18 23:21:00
/**
*返回一个含有同样一些字符的相反的字符串
*/
public String reverse(String s)
{
if ( s.equals("") )
return "";
else
return (reverse(s.substring(1)) + s.charAt(0));
} // reverse(String)
回复列表 (共5个回复)
沙发
scaredkinght [专家分:5310] 发布于 2008-09-19 11:07:00
/**
*返回一个含有同样一些字符的相反的字符串
*/
public String reverse(String s)
{
if ( s.equals("") )
return "";
else
return (reverse(s.substring(1)) + s.charAt(0));
} // reverse(String)
你这个程序能实现reverse的效果吗?你的好像就是把一个字符串执行了循环移位的操作
我的修改(在你基础之上)
/**
*返回一个含有同样一些字符的相反的字符串
*/
public String reverse(String s)
{
if ( s.equals("") )
return "";
else
{
return (reverse(s.substring(1)) + s.charAt(0));
} // reverse(String)
板凳
scaredkinght [专家分:5310] 发布于 2008-09-19 11:11:00
刚才按错了。。。。。
/**
*返回一个含有同样一些字符的相反的字符串
*/
public String reverse(String s)
{
if ( s.equals("") )
return "";
else
{
return (s.charAt(s.length()-1)+reverse(s.substring(1, s.length()-1)) +s.charAt(0));
} // reverse(String)
3 楼
scaredkinght [专家分:5310] 发布于 2008-09-19 11:17:00
public class Test
{
public static String reverse(String s)
{
if ( s.length() <= 1)
return s;
else
{
return (s.charAt(s.length()-1)+reverse(s.substring(1, s.length()-1)) +s.charAt(0));
} // reverse(String)
}
public static void main(String[] args)
{
String s="China";
s=Test.reverse(s);
System.out.println(s);
}
}
修改并测试了一下
4 楼
scaredkinght [专家分:5310] 发布于 2008-09-19 11:18:00
注意我停止递归的条件~~我觉得这个比较好
5 楼
myfly0402 [专家分:80] 发布于 2008-09-23 20:24:00
我想通了,我的能实现翻转的功能,只是看错了括号。。
我来回复