@java蓝桥杯B组习题基础练习(30)BASIC-021 Sine之舞,关键字:字符串 递归 递推

@java蓝桥杯B组习题基础练习(30)BASIC-021 Sine之舞,关键字:字符串 递归 递推

问题描述

最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备
和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。

不妨设
  An=sin(1–sin(2+sin(3–sin(4+…sin(n))…)
  Sn=(…(A1+n)A2+n-1)A3+…+2)An+1
  FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。
输入格式
  仅有一个数:N<201。
输出格式
  请输出相应的表达式Sn,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入
3
样例输出
((sin(1)+3)sin(1–sin(2))+2)sin(1–sin(2+sin(3)))+1


import java.util.Scanner;

public class BASIC021递归¥递推 {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		String[] A=new String[n+1];//创建两个字符数组
		String[] S=new String[n+1];
		A[1]="sin(1)";
		for(int i=2;i<=n;i++)//形成An;
		{
//			StringBuilder f=new StringBuilder(" ");
			String f=" ";
			if(i%2==0)
			{
				f="-";
			}
			else
			{
				f="+";
			}
			A[i]=A[i-1].substring(0, A[i-1].length()-i+1)+f+"sin("+i+")";
			for(int j=1;j<i;j++)
			{
				A[i]+=")";
			}
//			System.out.println(A[i]);
		}//思路:可以先连接形成目标字符串的雏形,在依次加括号!!!
//		System.out.println(A[n]);
	    if(n==1)//形成Sn
	    {
		S[1]=A[1]+"+"+(n-1+1);
		System.out.println(S[n]);
	    }
	    else {
	    S[1]=A[1]+"+"+(n-1+1);
		for(int i=2;i<=n;i++)
		{
			S[i]=S[i-1]+")"+A[i]+"+"+(n-i+1)+")";
			for(int j=1;j<i;j++)
			{
				S[i]="("+S[i];
			}
		}
		System.out.println(S[n].substring(1, S[n].length()-1));
	    }//思路:可以先连接形成目标字符串的雏形,在依次加括号!!!
//		while(i<=n)
//		{
//			s[i]="("+A[i]+(n-i+1)+")"
//		}
		// TODO Auto-generated method stub
	}
}
发布了41 篇原创文章 · 获赞 1 · 访问量 1297

猜你喜欢

转载自blog.csdn.net/DAurora/article/details/105353723