Sine之舞JAVA代码

问题描述

    最近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

分析:使用递归,写三个方法An,Sn,Sin。使用递归得到输入为n时An的表达式。Sn调用An方法再通过递归得到Sn的表达式。

代码:

public class Main {
 
	public static void main(String[] args) {
		
		System.out.println(Sn(new Scanner(System.in).nextInt(),1));
		
	}
	public static String Sn(int x,int y) {
		if (x<=1) {
			return An(x)+"+"+y;
		}
		return "("+Sn(x-1,y+1)+")"+An(x)+"+"+y;
	}
	
	public static String An(int x) {
		return Sin(x,1);
	}
	
	public static String Sin(int x,int i) {
 
		if (x<=1) {
			return "sin("+(x+i-1)+")";
		}
		return "sin("+(i)+(i%2==0?"+":"-")+Sin(x-1,i+1)+")";
	}
}
发布了19 篇原创文章 · 获赞 24 · 访问量 5553

猜你喜欢

转载自blog.csdn.net/weixin_44268113/article/details/104197808