[实验任务二]:递归方法
(1) 使用递归方式判断某个字串是否是回文( palindrome );
“回文”是指正着读、反着读都一样的句子。比如“我是谁是我”
使用递归算法检测回文的算法描述如下:
A single or zero-character string is a palindrome.
Any other string is a palindrome if the first and last characters are the same, and the string that remains, excepting those characters, is a palindrome.
package palindrome;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
/*
* 使用递归方式判断某个字串是否是回文( palindrome )
* 从文件中读入
*/
public class palindrome {
public static void main(String[] args) throws IOException {
String url = "test.txt";
File file = new File(url);// 指定操作文件
if (!file.exists() || file.isDirectory()) {
System.out.println("文件不存在!");
return;
} else
System.out.println("文件导出成功");
StringBuffer sb0 = new StringBuffer();
* 使用递归方式判断某个字串是否是回文( palindrome )
* 从文件中读入
*/
public class palindrome {
public static void main(String[] args) throws IOException {
String url = "test.txt";
File file = new File(url);// 指定操作文件
if (!file.exists() || file.isDirectory()) {
System.out.println("文件不存在!");
return;
} else
System.out.println("文件导出成功");
StringBuffer sb0 = new StringBuffer();
BufferedReader br;
try {
br = new BufferedReader(new FileReader(file));
String temp = null;
//sb = new StringBuffer();
temp = br.readLine();
while (temp != null) {
sb0.append(temp + "\r");
temp = br.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
String sb = sb0.toString();
boolean flag = find(sb,0,sb.length());
System.out.println(flag);
}
private static boolean find(String sb, int start, int length) {
if(length<=1)
return true;
else if(sb.toCharArray()[start]==sb.toCharArray()[length-1]){
return find(sb,start+1,length-1);
}
return false;
}
}
try {
br = new BufferedReader(new FileReader(file));
String temp = null;
//sb = new StringBuffer();
temp = br.readLine();
while (temp != null) {
sb0.append(temp + "\r");
temp = br.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
String sb = sb0.toString();
boolean flag = find(sb,0,sb.length());
System.out.println(flag);
}
private static boolean find(String sb, int start, int length) {
if(length<=1)
return true;
else if(sb.toCharArray()[start]==sb.toCharArray()[length-1]){
return find(sb,start+1,length-1);
}
return false;
}
}
自我抑郁又自我救赎