如何不用循环实现1+...+n?这道题目是一道面试题,至于为什么要这样问,用循环解决1加到n岂不是更高效,也是为了锻炼一下思维,看你能想到几种
第一种:递归实现
#include<iostream>
using namespace std;
int add(int x)
{
if (x <= 1)
{
return 1;
}
return x + add(x - 1);
}
int main()
{
printf("%d\n", add(100));
return 0;
}
第二种:模板实现
#include<iostream>
#include<windows.h>
using namespace std;
template<int N> //非类型的函数模板参数
class add
{
public:
enum
{
value = add<N - 1>::value + N
};
};
template<> //特化
class add<1>
{
public:
enum
{
value = 1
};
};
int main()
{
cout << add<100>::value << endl;
system("pause");
return 0;
}
这里用模板也类似递归,在最后把value的值特化为1,就可以一直加到100