目录
题目
An=sin(1–sin(2+sin(3–sin(4+...sin(n))...)
Sn=(...(A1+n)A2+n-1)A3+...+2)An+1
输入N(<201),输出相应表达式Sn
代码
#include <iostream>
using namespace std;
int i=1;
int j=0;
void A(int n)
{
if(1==n)
{
cout<<"sin("<<i<<")";
i=1;
return;
}
cout<<"sin("<<i;
if(i%2==0)cout<<"+";else cout<<"-";
i++;
A(n-1);
cout<<")";
}
void S(int n)
{
if(n==1)
{
//cout<<"(";
A(1);
cout<<"+"<<j;
return;
}
cout<<"(";
S(n-1);
j--;
cout<<")";
A(n);
cout<<"+"<<j;
}
int main()
{
int n;
cin>>n;
j=n;
S(n);
return 0;
}
思路
递归:A(n)
递归体:An=sin( i-A(n-1) )
递归出口:A1=sin(n)
i是与n逆向变化的变量,当n从n变为1,i从1变成n
S(n)
递归体:Sn=S(n-1)*An +j (与此同时输出一队括号)(j值为1)
递归出口 S1=A1+j(此时j值为n)(注意,最后一个S1是没有括号的!不需要输出括号了)