某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1。使用非递归的算法求解满足要求的n值的程序。

某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1。(n-2  n-1 均为小标)

下列程序的功能是:要求依次对于整数M=100、1000和10000求出对应的n值,使其满足:Sn<M且Sn+1>=M(n+1为下标),这里Sn=A1+A2+…+An,并依次把n值存入数组单元b[0]、b[1]和b[2]中,请编制jsvalue()函数来实现此功能,最后调用函数writeDat()把数组b[]中的值输出到OUT98.DAT文件中。


程序很挫,今天晚上脑子很乱。随便编的。望各位能给小弟修改下。。。。。。


#include  <stdio.h>
int  b[3];
void jsvalue()
{
	int i=1,s1=1,s2=1,s0=s2+2*s1,sum=s1+s2,j=sum;//s1表示s(n-1) s2表示s(n-2) s0表示s(sn)
	while(!((j<100)&&(sum>=100)))
	{
		j=sum;
		sum = sum+s0; 
		s2 = s1;
		s1 = s0;
		s0 = s2+2*s1;//s0表示Sn
		i++;	
	}
	b[0]=i;

	while(!((j<1000)&&(sum>=1000)))
	{
		j=sum;
		sum = sum+s0; 
		s2 = s1;
		s1 = s0;
		s0 = s2+2*s1;
		i++;	
	}
	b[1]=i;

	while(!((j<10000)&&(sum>=10000)))
	{
		j=sum;
		sum = sum+s0;
		s2 = s1;
		s1 = s0;
		s0 = s2+2*s1;
		i++;	
	}
	b[2]=i;
}
main()
{
  jsvalue();
  printf("M=100,n=%d\nM=1000,n=%d\nM=10000,n=%d\n",b[0],b[1],b[2]); 
  writeDat();
}
writeDat()
{
  FILE *fp;
  fp=fopen("OUT98.DAT","w");
  fprintf(fp,"%d\n%d\n%d\n",b[0],b[1],b[2]);
  fclose(fp);
}


博主个人网站 http://henghui.web-126.com/



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值