在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));
}
本文针对C语言教学中的一个具体问题——编写递归函数计算1!到12!的累加和,给出了作者自认为满意的解答方案,并对比了网上的解法。
7290

被折叠的 条评论
为什么被折叠?



