挑战一个经典的算法题!圣人
挑战一个经典的算法题!高人
实现一个函数,
计算1到n的和,当然n是变量
不能出现以下:
乘除操作,位操作,if-else,for,while,switch,?:三目运算符,全局变量,模版,标准库函数。
高手贴代码吧
------解决方案--------------------
goto 可以用么?递归可以么?写汇编行么?
------解决方案--------------------
递归?
------解决方案--------------------
数组x可以用其他程序生成。。。
------解决方案--------------------
这。。。判断的语句被限制死了。。。
------解决方案--------------------
int func( const int n )
{
( n - 1 ) && ( return func( n - 1 ) + n );
return 1;
}
------解决方案--------------------
结贴吧!
------解决方案--------------------
靠,不能三目运算符,你妹啊!!
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
借用~~
------解决方案--------------------
没写全。。。
------解决方案--------------------
对于楼主这种变态的问题,
就用变态的解法吧。
fun1楼主自己写吧。
运算完毕,程序崩溃。
最后会在控制台输出结果。
------解决方案--------------------
我其实受不了这样傻逼的算法题了.
------解决方案--------------------
这算啥啊,你还可以再加个要求:代码只需编译不用执行即可得出答案.
------解决方案--------------------
这怎么搞?被限制死了!
------解决方案--------------------
------解决方案--------------------
不能用if-else也可以递归滴,虽然代码看起比较无耻:
实现一个函数,
计算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 );
}
------解决方案--------------------
借用~~
int func(int n, int *sum)
return (n && func(n - 1, sum), *sum += n);
}
------解决方案--------------------
没写全。。。
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;
}