C语言编写 已知一数列的第n项的通式为f(n)=n*(n+1),分别用非递归法和递归法编程求解该数列第1到1000项的和

 我来答
pangzibaibai
2013-01-01 · TA获得超过148个赞
知道小有建树答主
回答量:110
采纳率:0%
帮助的人:78.1万
展开全部

就是要求1000阶乘吧,其实计算机的正常运算时做不到1000的,上面的那些程序只会都得到较小数字的阶乘,至于1000,根本算不出来的。。。

看看这个吧。。。

#include<stdio.h>

#define Max 12345 

int main()

 {

     

     int wei[Max],jinwei[Max];

     int i,j,n,k,top=1;

          wei[1]=1,jinwei[1]=1;

     printf("please input a number:\n");

     scanf("%d",&n);

     for(i=2;i<=n;i++)

     {

         for(j=1;j<=top;j++)

           {

               jinwei[j]=(wei[j]*i+jinwei[j-1])/10;

               wei[j]=(wei[j]*i+jinwei[j-1])%10;

               if(jinwei[top]>=1)

                  {

                    top++;

                  }

            }

     }

      for(k=top;k>=1;k--)

     {

        printf("%d",wei[k]); 

     }

     getchar();getchar();

}

 

结果是;

 

百度网友b0e28cae4
2013-01-01 · TA获得超过4016个赞
知道大有可为答主
回答量:1275
采纳率:85%
帮助的人:616万
展开全部
#include <stdio.h>
/*
非递归求:f(1) + f(2) + ... + f(m)
其中 f(n) = n*(n+1)
*/
unsigned int sum_fn(unsigned int m)
{
int n, sum=0;
for(n=1; n<=m ;n++)
{
sum += n*(n+1);
}
return sum;
}
/*
递归求:f(1) + f(2) + ... + f(m)
其中 f(n) = n*(n+1)

递归原理:
当 m=1
sum(m) = sum(1) = 1*(1+1) = 2

当 m >= 2
sum(m) = f(1) + f(2) + ...+ f(m-1) + f(m)
= sum(m-1) + f(m)
= sum(m-1) + m(m+1)

*/
unsigned int sum_fn_recursion(unsigned int m)
{
if(m == 1)
return m*(m+1);
else
return sum_fn_recursion(m-1) + m*(m+1);
}

int main(int argc, char *argv[])
{
printf("%u %u\n",sum_fn(1000), sum_fn_recursion(1000));
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吃肉的小浣熊
2013-01-01
知道答主
回答量:10
采纳率:0%
帮助的人:1.4万
展开全部
int sum=0;
for(int i=1;i<=1000;i++)
{
sum=sum+i*(i+1);
}
printf("/d",sum);
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梦水紫灵
2013-01-01 · TA获得超过668个赞
知道小有建树答主
回答量:483
采纳率:72%
帮助的人:158万
展开全部
递归:
#include<stdio.h>
main()
{
int f,n;
for(n=1;n<1001;n++)
{
f=f+n*(n+1);
}
printf("%d\n",f);

非递归:
#include<stdio.h>
main()
{
int f,n=1000;
f=n*(n+1)*(2*n+1)/6+n*(n+1)/2;
printf("%d\n",f);
}
有问题请补充。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Donald_Draper
2013-01-01 · TA获得超过155个赞
知道答主
回答量:272
采纳率:0%
帮助的人:97.2万
展开全部
非递归算法
#include<stido.h>
void main()
{
int sum=0;
for(int i=1;i<=1000;i++)
{
sum+=i*( i+1);
printf("总和为:%d",sum);
}
递归算法
#include<stdio.h>
int f(n)
{
if(n=1) f(n)=1;
return n*(n+1)+f(n-1);
}
void main()
{

int sum=0;
sum=f(1000);
printf("总和为:%d",sum);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式