sine之舞(递归)

Posted jiamian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

3

Sample Output

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

 

就一道简单递归,写两个递归函数AN,SN就行了

不过改了一晚上,被这个减号坑惨了,"-"和"—"都不是题中的这个符号"–"

无语。。。。。。。

以后遇到符号一律复制,绝不手打

 

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <iostream>
 4 #include <string>
 5 #include <math.h>
 6 #include <algorithm>
 7 #include <vector>
 8 #include <stack>
 9 #include <queue>
10 #include <set>
11 #include <map>
12 #include <sstream>
13 const int INF=0x3f3f3f3f;
14 typedef long long LL;
15 const int mod=1e9+7;
16 //const double PI=acos(-1);
17 #define Bug cout<<"---------------------"<<endl
18 const int maxm=1e6+10;
19 const int maxn=1e5+10;
20 using namespace std;
21   
22 void PTA(int t,int n)//输出AN
23 {
24     if(t>n)
25         return ;
26     printf("sin(%d",t);
27     if(t!=n)
28     {
29         if(t%2)
30             printf("");
31         else
32             printf("+");
33     }
34     PTA(t+1,n); 
35     printf(")");
36 }
37   
38 void PTS(int t,int n)//输出SN 
39 {
40     if(t<1)
41         return ;
42     if(t!=1)
43         printf("(");
44     PTS(t-1,n);
45     if(t!=1)
46         printf(")");
47     PTA(1,t);
48     printf("+%d",n+1-t);
49 }
50   
51 int main()
52 {
53     int n;
54     scanf("%d",&n);
55     PTS(n,n);
56     return 0;
57 }

 

 

差不多的:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <iostream>
 4 #include <string>
 5 #include <math.h>
 6 #include <algorithm>
 7 #include <vector>
 8 #include <stack>
 9 #include <queue>
10 #include <set>
11 #include <map>
12 #include <sstream>
13 const int INF=0x3f3f3f3f;
14 typedef long long LL;
15 const int mod=1e9+7;
16 //const double PI=acos(-1);
17 #define Bug cout<<"---------------------"<<endl
18 const int maxm=1e6+10;
19 const int maxn=1e5+10;
20 using namespace std;
21  
22 void PTA(int t,int n)
23 {
24     if(t==n)
25     {
26         printf("sin(%d)",t);
27         return ;
28     }   
29     printf("sin(%d",t);
30     if(t%2)
31         printf("");
32     else
33         printf("+");
34     PTA(t+1,n); 
35     printf(")");
36 }
37  
38 void PTS(int t,int n)
39 {
40     if(t==n)
41     {
42         PTA(1,1);
43         printf("+%d",t);
44         return ;
45     }
46     else
47     {
48         printf("(");
49         PTS(t+1,n);
50         printf(")");
51         PTA(1,n-t+1);
52         printf("+%d",t);
53     }
54 }
55  
56 int main()
57 {
58     int n;
59     scanf("%d",&n);
60     PTS(1,n);
61     printf("
");
62     return 0;
63 }

 

以上是关于sine之舞(递归)的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯_基础训练_Sine之舞

[蓝桥杯][基础练习VIP]Sine之舞

蓝桥杯练习系统—基础练习 sine之舞

sin之舞---蓝桥杯练习

蓝桥杯vip试题 sina之舞

蓝桥杯vip试题 sina之舞