JAVA-蓝桥杯-基础练习 FJ的字符串

问题描述
  FJ在沙盘上写了这样一些字符串:
  A1 = “A”
  A2 = “ABA”
  A3 = “ABACABA”
  A4 = “ABACABADABACABA”
  … …
  你能找出其中的规律并写所有的数列AN吗?
   这里我们使用两种方法来实现:
  方法一:采用循环来做
  方法二:采用递归来做

具体代码如下:

import java.util.Scanner;


public class Fj的字符串 {

	/**
	 * 问题描述
          FJ在沙盘上写了这样一些字符串:
          A1 = “A” //当等于1的时候也就是ASCII等于1+64的值
          A2 = “ABA”  //当等于2的时候  “中间的值”  也就是ASCII等于2+64的值,而两边则是前一个的字母
          A3 = “ABACABA”  //当等于3的时候  “中间的值”  也就是ASCII等于3+64的值,而两边则是前一串的字母
         A4 = “ABACABADABACABA”  .......
  … …
  你能找出其中的规律并写所有的数列AN吗?
	 */
	
	//方法二的递归:
	public static String f(int s ,String b,int a ){
		 char c;	 //定义变量
		 if(a==1){	  //如果a=1就直接返回字符串“A”;
			 return "A";
		 }
		 c=(char)(s+64); //变量自增
	     b=b+""+c+""+b;  //字符串叠加
		 if (s>=a) { //如果大于等于a直接返回字符串b;
			return b;
		}
        
        return f(s+1,b,a); //s自增;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        int a=sc.nextInt(); //定义用户输入的数字

        //方法一:
        String b="A" ; //设置起始值
        char c; //  定义变量,   
        if (a==1) {  //如果用户输入的数字是1,
			System.out.println("A"); //那么直接输出A,
			return; //结束下面的语句
		}
        for (int i = 2; i <=a; i++) { //如果大于1则循环下面的语句	
        	c=(char)(i+64); //定义中间变量
        	b=b+""+c+""+b;  //然后给b重新赋值
		} 
        System.out.println(b);//最后输出b
        


        //方法二:
        int s = 2;
        String b = "A";
        System.out.println(f(s,b, a));         
  
	}

}

程序调试结果:

4

第一种调试结果:ABACABADABACABA
第二种调试结果:ABACABADABACABA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值