原贴:
http://bbs.csdn.net/topics/390068535
实现一个函数,
计算1到n的和,当然n是变量
不能出现以下:
乘除操作,位操作,if-else,for,while,switch,?:三目运算符,全局变量,模版,标准库函数。
一
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 );
}
……………………