实现1+2+3…+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字(for、while、if、else、switch、case)。
解法一: 利用 &&的性质
#include<iostream>
using namespace std;
int sum=0;
int add(int n)
{
sum+=n;
n&&add(n-1);
}
int main()
{
add(5);
cout<<sum;
}
解法二: 构造类
#include<iostream>
using namespace std;
int sum=0,n=0;
class Add
{
public:
Add()
{
n++;
sum+=n;
}
};
int main()
{
Add a[5];
cout<<sum;
}
解法三: 使用函数指针
#include<iostream>
#include<stdio.h>
using namespace std;
typedef int (*fun)(int);
int fun1(int num)
{
return 0;
}
int fun2(int num)
{
fun f[2] = {fun1,fun2};
return num + f[!!num](num-1);
}
int main()
{
printf("%d",fun2(5));
return 0;
}