題目一:不使用 if、while、goto、for、*、/、*=、/= 語句,實現對 1+2+3+...+n 的求和?(要求使用C++語言)
方法1:(算法原則:使用&&運算符的一個爲假,另一個不進行判斷的原則)
#include <iostream>
using namespace std;
int sum(int n)
{
int num = 0;
int b = n && ( num = n + sum(n-1));
return num;
}
int main(void)
{
int num ;
cin >> num;
while(0 != num)
{
cout << "sum(" << num << ") = " << sum(num) << endl;
cin >> num;
}
return 0;
}
方法2:(算法原則:通過new可以動態創建類對象和類靜態變量歸類所有的原則)
#include <iostream>
using namespace std;
int g_sum = 0;
class A
{
public:
A() { g_sum += (++sum); }
public:
static int sum;
};
int A::sum = 0;
int main(void)
{
A *p = NULL;
int num ;
cin >> num;
while(0 != num)
{
p = new A[num];
if(NULL == p) return 0;
cout << "sum(" << num << ") = " << g_sum << endl;
delete []p;
p = NULL;
cin >> num;
}
return 0;
}