@java 蓝 桥 杯 Ejercicios de grupo B ejercicios básicos (30) BASIC-021 Danza sinusoidal, palabra clave: recursividad recursiva de cuerdas
Descripción del problema
最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备
和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。
Digamos
An = sin (1 – sin (2 + sin (3 – sin (4 +… sin (n)) ...)
Sn = (… (A1 + n) A2 + n-1) A3 +… + 2) An + 1
FJ quiere que las vacas calculen el valor de Sn. Ayúdenos a imprimir la expresión completa de Sn para que las vacas resuelvan el problema. El
formato de entrada
tiene solo un número: N <201. Para el
formato de salida
, envíe la expresión correspondiente Sn , Finaliza con un carácter de nueva línea. La salida no debe contener espacios adicionales o salto de línea, caracteres de retorno de carro.
Entrada
de
muestra 3 Salida de muestra
((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
}
}