1. 程式人生 > 實用技巧 >Sine之舞(遞迴/遞推)

Sine之舞(遞迴/遞推)

Description

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

Input

僅有一個數:N<201。

Output

請輸出相應的表示式Sn,以一個換行符結束。輸出中不得含有多餘的空格或換行、回車符。

Sample Input 1

3

Sample Output 1

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

Solution
//雖然是很簡單的題,但是找規律還是找了半天,參考部落格(https://blog.csdn.net/summer_dew/article/details/82082459?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase

#include<stdio.h>

void A(int n) {
  int i;
  for (i = 1;i <= n;i++) {
    printf("sin(%d", i);
    if (i % 2 == 0 && i != n)
      printf("+");
    if (i % 2 != 0 && i != n)
      printf("-");
  }
  for(i=0;i<n;i++)
    printf(")");
}

void S(int n) {
  int i,j;
  j = n;

  for (i = 0;i < n - 1;i++)
    printf("(");
  for (i = 1;i <= n;i++) {
    A(i);
    printf("+%d", j);
    if (j != 1)
      printf(")");
    j--;
  }
}

int main() {
  int n;
  scanf("%d", &n);
  S(n);
  return 0;
}