您的位置:首页 > 编程语言 > C语言/C++

递归字符串C++编程(1)

2016-02-17 14:56 197 查看
问题描述

  最近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

c++ Code:

#include<iostream>
#include <sstream>
#include<stdlib.h>
#include<string>
#include<math.h>
using namespace std;
string num2str(double i)
{
stringstream ss;
ss<<i;
return ss.str();
}
string A(int n)
{
string q;
if (n==1)
{
return "sin(1)";
}
else
{
q=A(n-1);
return q.substr(0,q.length()-(n-1))+((n%2)?"+":"-")+"sin("+num2str(n)+")"+q.substr(q.length()-(n-1));
}
}
string S(int n,bool isnumerical)
{
string q=(isnumerical?A(1):"A1")+"+"+num2str(n);
int i;
for (i=n-1;i>=1;i--)
{
q="("+q+")"+(isnumerical?A(n-i+1):("A"+num2str(n-i+1)))+"+"+num2str(i);
}
return q;
}
int string2int(string str)
{
return (int)atof(str.c_str());
}
int str2num(string s)
{
int num;
stringstream ss(s);
ss>>num;
return num;
}
int main()
{
int N;
cin>>N;
cout<<"N="<<N<<endl;
cout<<"A(N)="<<A(N)<<endl;
cout<<"S(N)="<<S(N,false)<<endl;
cout<<"S(N)="<<S(N,true)<<endl;
return 0;
}


Results:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: