解题思路:
由里到外,层层递归。
注意事项:
参考代码:
import java.util.Scanner;
public class Mine {
//问题 1463: [蓝桥杯][基础练习VIP]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的完整表达式,以方便奶牛们做题。*/
static String s="";
static String s2="";
static String s3="+";
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin=new Scanner(System.in);
int num=cin.nextInt();
Sn("",1,num);
}
public static String An(String s,int k,int num){
if(k<=0){
return s;
}
if(k%2==1){//判断变号的位置
s2="-";
}else{
s2="+";
}
if(k==num){
s="sin("+k+")";
}else{
s="sin("+k+s2+s+")";//括号在外由里到外层层递归
}
return An(s,k-1,num);
}
public static void Sn(String s,int q,int num){
if(q>num){
System.out.println(s);
return;
}
if(q==num){
s=s+An(s,q,q)+s3+(num-q+1);
}else{
s="("+s+An(s,q,q)+s3+(num-q+1)+")";//注意相加的位置
}
Sn(s,q+1,num);
}
//((sin(1)+3)sin(1-sin(2))+2)sin(1-sin(2+sin(3)))+1
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复