解题思路:
由里到外,层层递归。
注意事项:
参考代码:
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 人评分
点我有惊喜!你懂得!浏览:1437 |
模拟计算器 (C语言代码)浏览:966 |
简单的a+b (C语言代码)浏览:764 |
C语言训练-计算一个整数N的阶乘 (C语言代码)浏览:986 |
Pascal三角 (C语言代码)浏览:1252 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:1090 |
wu-淘淘的名单 (C++代码)浏览:1532 |
Hello, world! (C语言代码)浏览:766 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:438 |
用筛法求之N内的素数。 (C语言代码)浏览:595 |