1. 程式人生 > 其它 >Java版Sine之舞<經典遞迴>

Java版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的完整表示式,以方便奶牛們做題。


```java
import java.util.*;
public class Main {
    public static void main(
String[] args) { Scanner sc=new Scanner(System.in); int x=sc.nextInt(); System.out.println(s(1,x)); } public static String f(int begin,int end){ if(begin==end) return ("("+begin+")"); else if(begin%2==1) return
("("+begin+"-sin"+f(begin+1,end)+")"); else return ("("+begin+"+sin"+f(begin+1,end)+")"); } public static String s(int begin,int end){ if(begin==end&&end!=1) return ("(sin"
+f(1,1)+"+"+begin+")"); if(end==1) return ("sin"+f(1,1)+"+"+begin); if(begin==1){ return (s(begin+1,end)+"sin"+f(1,end-begin+1)+"+"+begin); } else return ("("+s(begin+1,end)+"sin"+f(1,end-begin+1)+"+"+begin+")"); } }