要求先用一个函数描述递归过程,最好是for循环!比如for n=1,return 1;else ......这样的写法!我真急用,递归过程最好是简单的for循环!主函数可以不用写,真的谢谢了!
#include<stdio.h>
__int64 factorial( __int64 n)
{
if( n == 1 )
return 1 ;
else
return n*factorial ( n-1 ) ;
}
void main()
{
__int64 factorial_sum = 0;
for(__int64 i = 1 ; i < 202 ; i++ )
factorial_sum += factorial( i ) ;
printf("The answer is :%I64d\n",factorial_sum);
}
运行结果如图
需要注意的是,1!+21!+31!+......+201!的结果大的惊人,已经不能用长整形来表示了,所以要用到64位整型数,即用64位来表示一个整数,其范围自己算吧
如有不足,欢迎指正!
追问哥们,我觉得你这算法不是算我这题的啊,你是从1加到201了吧,尤其是i=1,i++,明显是加的1啊??而这个1+21+31这样有规律的,我们这题不需要上机实验,只需要把思路写出来,老师说递归环节用个数学公式就表示出来了,n=1的时候,返回值是1,1<n<=20的时候,用n*10+1 就表示出来了,你觉得呢??
追答额……我想你可能还是不理解我的程序,我的 factorial() 函数已经实现了阶乘的功能,main() 函数里面的 for 循环只是把各个阶乘和结果加起来而已,我的递归就在 return n*factorial ( n-1 ) 一句话里面。而且既然是阶乘,那么其溢出问题不容忽视,用 int 来算显然是不明智的