大家的方法都是正确的,我再来个不同点的丰富下^_^#include double sum(int x, unsigned int y = 1){ return x > 0 ? x*y + sum(x-1, y+1) : 0;}int main(){ printf("1+(1+2)+(1+2+3)...(1+2+3+4+5+6+7+8+9+10+11+12) = %.0f", sum(12));}以上是C++写法,C中你可以这样:#include double sum(int x, unsigned int y){ return x > 0 ? x*y + sum(x-1, y+1) : 0;}int main(){ printf("1+(1+2)+(1+2+3)...(1+2+3+4+5+6+7+8+9+10+11+12) = %.0f", sum(12, 1));}注意不管在C还是在C++中sum的第二个参数始终都要设置为1。用C++标准库的话也很简单:#include #include #include #include using namespace std;int main(){ vector value; vector PartSum; for(int i = 1; i <= 12; ++i)value.push_back(i); partial_sum(value.begin(), value.end(), back_inserter(PartSum)); double sum = accumulate(PartSum.begin(), PartSum.end(), 0); cout << "Sum: " << sum << endl;}不是吧?这么简单的题都不会做?你在大学里都干什么了?难怪大学生越来越不值钱了。我是化工专业的,对计算机只是爱好。我可以告诉你,两个循环嵌套就可以实现了。
|