在C语言教学中遇到一问题,要写一个递归函数求解1!+2!+...+12!。网上找到飞雪的博客(http://hi.baidu.com/feixue/blog/item/5e00c93d9eec99c69f3d624a.html),给出了一解法,但我觉得该解法有错误,现给出自认为满意的解答。但还是要感谢飞雪博客给予我的启发。
long f(int n, int m)
{
if( n == 1 && m == 1) return 1;
if( m == 1) return n*f(n-1,1);
return f(n,1) + f(n-1,m-1);
}
int main(void)
{
int n=12;
printf("1!+2!+...+12!=%ld",f(12,12));
}
long f(int n, int m)
{
if( n == 1 && m == 1) return 1;
if( m == 1) return n*f(n-1,1);
return f(n,1) + f(n-1,m-1);
}
int main(void)
{
int n=12;
printf("1!+2!+...+12!=%ld",f(12,12));
}