1+2+3..+n
文章目录
//���ó˳���for�� while��if else��switch caseʵ��1+2+����+n //��Ȼ����ʽ�Ͳ�������
#include <iostream>
using namespace std;
//***********************��һ�����ù��캯������*****************************
class Temp{
public:
Temp(){++N; Sum+=N;}
static void Reset() {N=0;Sum=0;}
static unsigned int GetSum(){return Sum;}
private:
static unsigned int N;
static unsigned int Sum;
};
unsigned int Temp::N=0;
unsigned int Temp::Sum=0;
unsigned int Sum_Solution1(unsigned int n)
{
Temp::Reset();
Temp *a= new Temp[n];//���ù��캯��n��
delete[] a;
a=NULL;
return Temp::GetSum();
}
//***********************�ڶ��������麯������*****************************
//�麯�������������ж���������ͬ���ĺ��������ҿ���ͨ������ָ�������������ʻ������������е�ͬ������
//��������������һ���ݹ飬һ����ֹ�ݹ飬���Ǵ��ж�ѡһ���� ����������ͨ��!!n����ֵת���ɲ����͡�
class A;
A * Array[2];
class A{
public:
virtual unsigned int Sum(unsigned int n){
return 0;
}
};
class B :public A{
public:
virtual unsigned int Sum(unsigned int n){
return Array[!!n]->Sum(n-1)+n;//�Ӻ���ǰ��ʼ��
}
};
//���麯��ʵ�ֺ�����ѡ����ֵ��Ϊ0ѡ��B::Sum()��n=0ѡ��A::Sum()
int Sum_Solution2(int n){
A a;
B b;
Array[0]=&a;
Array[1]=&b;
int value=Array[1]->Sum(n);
return value;
}
//***********************���������ú���ָ������*****************************
//�ڴ�C���ԵĻ����У�����ʹ���麯������ʱ�����ú���ָ����ģ��
typedef unsigned int (*fun) (unsigned int);
unsigned int Sum_Solution3_Teminator(unsigned int n){
return 0;
}
unsigned int Sum_Solution3(unsigned int n){
static fun f[2]={Sum_Solution3_Teminator,Sum_Solution3};//��ʵ����һά����
return n+f[!!n](n-1);
}
//***********************������ģ����������*******************************
template <unsigned int n> struct Sum_Solution4{
enum Value {N=Sum_Solution4<n-1>::N+n};
};
template <> struct Sum_Solution4<1>{
enum Value {N=1};
};
int main()
{
cout<< Sum_Solution4<100>::N;//���ֵ��÷����ܶ���
return 0;
}