因为要求是写入二进制文件,所以创建或打开文件的 *** 作应该如下:
fp = fopen(str, "wb+");从prnt函数可以知道,文件里是以整形int的二进制格式存储数列值,没有分隔符,所以写入文件用以下语句:
fwrite(A+i,sizeof(int),1,fp);/start/int i;
int A[20]={1,1};
FILE fp;
fp = fopen(str, "wb+");
if (fp == NULL)
{
exit(0);
}
for(i=2;i<n;i++)
{
A[i] =A[i-1]+A[i-2];
}
for(i=0;i<n;i++)
{
fwrite(A+i,sizeof(int),1,fp);
}
fclose(fp);
/end/
斐波那契数列为:0,1,1,2,3,5,8,13
/你的程序/
#include<stdioh>
int fib(int n,int f)
{
if(n==1&&n==2) /n不可能同时等于1和2,所以递归无终点,会一直递归下去。/
{f=1;} /正确的斐波那契数列是n==1时f=0,n==2时f=1/
else
{f=fib(n-1,f)+fib(n-2,f);}
return f;
}
int main()
{
int n,f; /n没有赋初始值/
f=fib(n,f);
printf("%d",f);
return 0;
}
/改正后的程序/
#include<stdioh>
int fib(int n,int f)
{
if(n==1)
{
f=0;
}
else if(n==2)
{
f=1;
}
else
{
f=fib(n-1,f)+fib(n-2,f);
}
return f;
}
int main()
{
int n,f;
scanf("%d,%d",&n,&f);
f=fib(n,f);
printf("%d",f);
return 0;
}
#include<stdioh>
#include<stdlibh>
int f(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
else
{
return f(n - 1) + f(n - 2);
}
}
int main()
{
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
printf("%d ", f(i));
}
system("pause");
return 0;
}
我可以得知以下几点:
斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13 …,从第三项开始,每一项都等于前两项之和。
用C语言求斐波那契数列的一种常见方法是使用递归函数,即定义一个函数fib(n),返回第n项的值,然后在函数体中调用fib(n-1)和fib(n-2)。
这种方法虽然简单,但是效率很低,因为会重复计算很多次相同的值。例如,要计算fib(5),就要先计算fib(4)和fib(3),而计算fib(4)又要先计算fib(3)和fib(2),这样就浪费了时间和空间。
另一种方法是使用数组或变量来存储已经计算过的值,避免重复计算。例如,定义一个数组a[500],初始化a[0]=1,a1=1,然后用循环从第三项开始依次计算并存入数组中:a[i]=a[i-1]+a[i-2]。
以上就是关于C语言,写入斐波那契数到自命名文件全部的内容,包括:C语言,写入斐波那契数到自命名文件、c语言编写计算斐波那契(Fibonacci)、编写一段C语言程序:利用函数的递归调用求斐波那契数列,该数列的公式如下:等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)