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

来源:互联网 发布:kmp算法next的计算 编辑:程序博客网 时间:2024/06/05 15:07
某级数的前两项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表示Sni++;}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/