编写函数jsValue,它的功能是:求Hofstadter数列中的第m项H(m)(m<1000),结果由函数返回。其中数列H(
编写函数jsValue,它的功能是:求Hofstadter数列中的第m项H(m)(m<1000),结果由函数返回。其中数列H(n)的定义为:
H(1)=H(2)=1
H(n)=H(n-H(n-1))+H(n-H(n-2))(n>2)
最后调用函数writeDat()读取50个数据m,分别得出结果且把结果输出到文件out.dat中。
例如:当t=997时,函数值为605。
部分源程序已给出。
请勿改动主函数main()和写函数writeDat()的内容。
include<stdio. h>
int jsValue(int m)
{
main ( )
{
int m;
m=300;
printf ("m=%d, k-%d\n", m, jsValue (m));
writeDat ( );
writeDat ( )
{
FILE *in, *out;
int i,m,s;
in= fopen ( "in. dar" , "r" );
ut=f open ( "out. dar" , "w" );
for (i=0; i<50; i++) {
fscanf (in, "%d", &m);
s=jsValue (m);
printf( "%d\n", s );
fprintf (out, "%d\n" , s );
}
fclose (in);
fclose (out);
int jsVelue(int m) { if (m0) return -1; /*参数错误,正常运行不会出现*/ if(m==1 || m==2) return 1; /*初值H[1]:H[2]=1*/ else return jsValue (m-jsValue (m-1)) +jsValue (m-jsValue (m-2)); /*调用jsValue递归计算H[k]*/ } /*解法二,递推*/ int jsValue(int m) { int H[1000], i; H[1]=1;H[2]=1; /*初值H[1]=H[2]=1*/ for (i=3;i=m;i++) { H[i] = H[i-H[i-1)] +H[i-H[i-2]]; /*H(k)(ki)的值都己计算完成,直接使用*/ } return H[m]; /*返回所求的值*/ } 解析:类型:序列计算。
关键点:分析序列定义,选择合适的方法生成和存储序列或序列中的特定值。
此题有两种解法:
1.按照定义编写递归函数;(计算量大,容易超时,慎用)。
2.保存所有值,从小到大递推求解。
U.S.A.或U.S.前需要加the?美国的缩写形式U.S.A.或U.S.前需要加the 英语 2020-04-06 …
A物体放在B物体上,两物体间的动摩擦因数为u.A,B两物体的质量分别为m,M.今用水平恒力F拉A物 物理 2020-04-09 …
倾角为a的斜面有一个质量为m的物体,在水平推力F的作用下移动距离s,若动摩擦因数为u,推力...倾 物理 2020-05-15 …
水平传送带长为s,以速度v始终保持匀速运动,把质量为m的小物体轻放在A点,物体与皮带间的动摩擦因数 物理 2020-05-16 …
如图所示电路图中,定值电阻R1:R2:R3=3:2:3,电源电压不变.开关S闭合前,电压表的示数为 物理 2020-06-04 …
在一RLC串联电路中,已知R=22Ω,XL=50Ω,XC=50Ω,电源电压u=220√sin(31 物理 2020-06-07 …
题目是这样的:某人用手托着质量为m的物体,从静止开始沿水平方向运动,前进距离S后速度为V,物体与人 物理 2020-06-17 …
摩擦力跟减速度a的关系式是什么?一个物体在匀速运动(V0),在离重点距离S的时候匀减速运动,已知它 数学 2020-06-20 …
电路中,N为无源线性网络,电路中,N为无源线性网络,u(t)=10根号2cos(t+75度)V,l( 物理 2020-12-18 …
如图所示电路图中,定值电阻R1:R2:R3=3:2:3,电源电压不变.开关S闭合前,电压表的示数为U 物理 2021-01-22 …