求1+2+…+n变态问题的两个很棒的解法
题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
第一种方法:
1 class Sum 2 { 3 public: 4 Sum() 5 { 6 n++; 7 sum+=n; 8 } 9 void Result() 10 { 11 cout<<sum<<endl; 12 } 13 private: 14 static int sum=0; //类中的静态变量是属于类的,不属于某个对象!不能在定义对象时对变量初始化! 15 //不能用构造函数来初始化!而且使用时应加上类名,而不是对象。 16 static int n=0; 17 }; 18 19 int main() 20 { 21 Sum *S = new Sum[100]; 22 S -> Result(); 23 delete S; 24 return 0; 25 }
第二种方法:
1 int Sum( int n ) 2 { 3 int i = 1; 4 ( n>1 ) && ( i = Sum( n-1 )+n ); 5 return i; 6 }
**************************************************************
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对困难,能够不休不眠;面对压力,能够迎接挑战。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想,用智慧把属于自己的事业开创。其实我是一个程序员[=.=]
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对困难,能够不休不眠;面对压力,能够迎接挑战。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想,用智慧把属于自己的事业开创。其实我是一个程序员[=.=]