问题描述
FJ在沙盘上写了这样一些字符串:
A1 = “A”
A2 = “ABA”
A3 = “ABACABA”
A4 = “ABACABADABACABA”
… …
你能找出其中的规律并写所有的数列AN吗?
A1 = “A”
A2 = “ABA”
A3 = “ABACABA”
A4 = “ABACABADABACABA”
… …
你能找出其中的规律并写所有的数列AN吗?
输入格式
仅有一个数:N ≤ 26。
输出格式
请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入
3
样例输出
ABACABA
思路:观察A2-A3的变化可发现,A2=A1+B+A1,A3=A2+C+A2,A4=A3+D+A3。
得出表达式 :A(n)=A(n-1)+n<26字母对应的索引>+A(n-1)
使用递归实现。
package Basic;
import java.util.Scanner;
public class Basic22 {
private static int n =0;
static char[] zimu={
'A','B','C','D','E',
'F','G','H','I','J',
'K','L','M','N','O',
'P','Q','R','S','T',
'U','V','W','X','Y',
'Z'};
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner s = new Scanner(System.in);
n = s.nextInt();
String str = AN(n-1);
System.out.println(str);
}
public static String AN(int n){
if(n==0){
return ""+zimu[n];
}
else{
return AN(n-1)+zimu[n]+AN(n-1);
}
}
}