算法——基础篇——FJ的字符串

A1057. FJ的字符串(

http://www.tsinsen.com/A1057


问题描述  FJ在沙盘上写了这样一些字符串:
  A1 = “A”
  A2 = “ABA”
  A3 = “ABACABA”
  A4 = “ABACABADABACABA”
  … …
  你能找出其中的规律并写所有的数列AN吗?
输入格式  仅有一个数:N ≤ 26。
输出格式  请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入3

样例输出ABACABA

思路:

观察规律,对于A2的结果来说,可以看到,A2的结果由三部分组成,A1+B+A1,可以接着往下猜测,A3也可能满足此规律,A3=A2+C+A2,的确也满足这种规律,由此可以推测出如下公式

     f(A)=A;

     f(B)=f(A)+B+f(A);

     f(C)=f(B)+C+f(B);

    f(D)=f(C)+D+f(C);

就是一个递归调用的过程。


代码如下:

package hello.ant;

import java.util.Scanner;

public class AlogFJ2 {
	static char[] str={
		'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) {
		Scanner scanner=new Scanner(System.in);
		int n=0;
		n=scanner.nextInt();
		String str=findFJ(n-1);
		System.out.println(str);
	}
	static String findFJ(int n) {
		if(n==0){
			return ""+str[n];
		}else {
			return findFJ(n-1)+str[n]+findFJ(n-1);
		}
	}
}
输入
3
ABACABA

多观察规律,这种题是可以做出来的。。


你可能感兴趣的:(算法,递归)