Sine之舞---递归
蓝桥杯基础练习: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的完整表达式,以方便奶牛们做题。
不妨设
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
1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String args[]){ 5 Scanner sc = new Scanner(System.in); 6 int n = sc.nextInt(); 7 System.out.println(Sn(n,1)); 8 } 9 10 private static String Sn(int x,int y) { 11 if (x<=1) { 12 return An(x)+"+"+y; 13 } 14 return "("+Sn(x-1,y+1)+")"+An(x)+"+"+y; 15 } 16 17 private static String An(int x) { 18 return Sin(x,1); 19 } 20 21 private static String Sin(int x,int i) { 22 if (x<=1) { 23 return "sin("+(x+i-1)+")"; 24 } 25 return "sin("+(i)+(i%2==0?"+":"-")+Sin(x-1,i+1)+")"; 26 } 27 }