挑战一个经典的算法题!圣人

挑战一个经典的算法题!高人
本帖最后由 dfdqzp 于 2012-05-25 16:46:13 编辑
实现一个函数,
计算1到n的和,当然n是变量

不能出现以下:
乘除操作,位操作,if-else,for,while,switch,?:三目运算符,全局变量,模版,标准库函数


高手贴代码吧

------解决方案--------------------
goto 可以用么?递归可以么?写汇编行么?
------解决方案--------------------
递归?


int sum(int n)
{
  if (n==1)
    return 1;
  return n + sum(n-1);
}

------解决方案--------------------
int x[]={0,1,3,6,10 , ....... };
printf( "%d\n" , x[n] );

数组x可以用其他程序生成。。。
------解决方案--------------------
这。。。判断的语句被限制死了。。。
------解决方案--------------------
int func( const int n )
{
  ( n - 1 ) && ( return func( n - 1 ) + n );
  return 1;
}
------解决方案--------------------

int giSum(int aiN)
{
    return (1 == aiN) ? 1 : ( aiN + giSum(aiN-1) );
}


结贴吧!
------解决方案--------------------
靠,不能三目运算符,你妹啊!!
------解决方案--------------------

int func(int n, int *sum)
{

n&&func(n-1,sum);
return *sum += n;
}

------解决方案--------------------

typedef int (*F)(int);
int f0(int n)
{
return 0;
}

int fn( int n )
{
F f[2] = {f0,fn};
return n + f[n>0](n-1);
}

int main()
{
printf( "%d\n" , fn( 10 ) );
}

------解决方案--------------------
引用:
大家再试着,不能出现  <  ==  >等 比较符号

typedef int ( *F )( int );
int f0( int n )
{
    return 0;
}
int fn( int n )
{
    F f[2] = {fn,f0};
    return n + f[!n]( n - 1 );
}

------解决方案--------------------
引用:
测试了一下过了,结果正确。
嗯,不错,两行代码实现的。

只用一行代码可以么?
引用:
C/C++ code

int func(int n, int *sum)
{

n&amp;amp;&amp;amp;func(n-1,sum);
return *sum += n;
}
借用~~
int func(int n, int *sum)
    return (n && func(n - 1, sum), *sum += n);
}

------解决方案--------------------
引用:
引用:

测试了一下过了,结果正确。
嗯,不错,两行代码实现的。

只用一行代码可以么?
引用:
C/C++ code

int func(int n, int *sum)
{

n&amp;amp;amp;&amp;amp;amp;func(n-1,sum);
return *sum += n;
}
借用~~C/C++ co……
没写全。。。
int func(int n, int *sum)
{
    return (n && func(n - 1, sum), *sum += n);
}

------解决方案--------------------
对于楼主这种变态的问题,
就用变态的解法吧。
fun1楼主自己写吧。
运算完毕,程序崩溃。
最后会在控制台输出结果。
int *g_arr[2] = {0};
void fun1(int n)
{
int pos = n&&1;
*g_arr[pos] += n;
printf("count %d\n" ,*g_arr[1]);
}

void main()
{
int n = 3;
int na = 0;
g_arr[1] = &na;
fun1(n--);
fun1(n--);
fun1(n--);
fun1(n--);
fun1(n--);
...
}

------解决方案--------------------
我其实受不了这样傻逼的算法题了.
------解决方案--------------------
这算啥啊,你还可以再加个要求:代码只需编译不用执行即可得出答案.

------解决方案--------------------
这怎么搞?被限制死了!
------解决方案--------------------

int sum(int n)
{
   return n*(1+n)/2;
}

------解决方案--------------------
不能用if-else也可以递归滴,虽然代码看起比较无耻:

int sum(unsigned n)
{
int temp;
(temp = n-1) && (temp = sum(n-1));
int result = n + temp;
return result;
}

引用:
0分!!!!!!!!!!
不能用if-else

引用:
递归?


C/C++ code

int sum(int n)
{
if (n==1)
return 1;
return n + sum(n-1);