700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 求1+2+3+...+n 要求不能使用乘除法 for while if else switch case等关键字以及条件判断语句

求1+2+3+...+n 要求不能使用乘除法 for while if else switch case等关键字以及条件判断语句

时间:2021-09-26 08:16:03

相关推荐

求1+2+3+...+n 要求不能使用乘除法 for while if else switch case等关键字以及条件判断语句

方法一:利用构造函数和静态数据成员

[cpp]view plaincopy#include<iostream> usingnamespacestd; classTemp { public: Temp() { ++N; Sum+=N; } staticvoidReset() { N=0; Sum=0; } staticintGetSum() { returnSum; } private: staticintN; staticintSum; }; intTemp::N=0; intTemp::Sum=0; intsolution_Sum(intn) { Temp::Reset(); Temp*a=newTemp[n]; delete[]a; a=0; returnTemp::GetSum(); } intmain() { cout<<solution_Sum(100)<<endl; return0; }

方法二:利用虚函数

[cpp]view plaincopy#include<iostream> usingnamespacestd; classA; A*Array[2]; classA { public: virtualintSum(intn) { return0; } }; classB:publicA { public: virtualintSum(intn) { returnArray[!!n]->Sum(n-1)+n; } }; intsolution2_Sum(intn) { Aa; Bb; Array[0]=&a; Array[1]=&b; intvalue=Array[1]->Sum(n); returnvalue; } intmain() { cout<<solution2_Sum(100)<<endl; return0; }

利用函数指针

[cpp]view plaincopy#include<iostream> usingnamespacestd; typedefint(*fun)(int); intsolution_f1(inti) { return0; } intsolution_f2(inti) { funf[2]={solution_f1,solution_f2}; returni+f[!!i](i-1); } voidmain() { cout<<solution_f2(100)<<endl; }

三。利用&&的短路特性

[cpp]view plaincopy#include<stdio.h> #include<stdlib.h> #include<string.h> intadd_fun(intn,int&sum) { n&&add_fun(n-1,sum); return(sum+=n); } intmain() { intsum=0; intn=100; printf("1+2+3+...+n=%d\n",add_fun(n,sum)); return0; }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。