huangzimo


私信TA

用户名:huangzimo

访问量:1921

签 名:

等  级
排  名 18956
经  验 733
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:
由里到外,层层递归。
注意事项:

参考代码:

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 人评分

  评论区

  • «
  • »