蓝桥杯练习系统之基础训练Java版(2-21)—— Sine之舞

Kara ·
更新时间:2024-11-14
· 723 次阅读

蓝桥杯练习系统之基础训练Java版(2-21)—— 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的完整表达式,以方便奶牛们做题。

输入格式:

仅有一个数:N<201。

输出格式:

请输出相应的表达式Sn,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。

样例输入:

3

样例输出:

((sin(1)+3)sin(1–sin(2))+2)sin(1–sin(2+sin(3)))+1

代码如下:

import java.util.Scanner; public class Main { static void printA(int n, int k) { if (n == k) System.out.print("sin("+ n +")"); //还没到 n时,)就不会添加,即不会闭合:() else { System.out.print("sin(" + n); System.out.print(n % 2 == 0 ? "+" : "-"); // 这是探索出来的规律,sin(?)里面的偶加奇减 printA(n + 1, k); System.out.print(")"); } } static void printB(int n, int k) { if (n != 1) { // 如果 n等于 3,则要赋给 n-1个 ( 以此类推... System.out.print("("); printB(n - 1, k); // 递归完成的时候,最左边的 ( 已经完成 System.out.print(")"); // 这里用于添加 sin(1)+n) 中 n右边的 ) } printA(1, n); // n 已经等于 1的时候,执行此步骤 System.out.print("+" + (k - n)); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); // 3 printB(n, n + 1); //利用递归 System.out.print("\n"); //输出换行符 } }

希望能对您有帮助!谢谢。(这道题练习递归,极有好处!测试递推能力的一道题)


作者:╋━遺失在青春的殇



java版 蓝桥杯 JAVA 系统

需要 登录 后方可回复, 如果你还没有账号请 注册新账号