c语言fibonacci数列
1. 用c语言编写Fibonacci数列
intfib[20]={0,0,1},i;
for(i=3;i<19;i++){
fib[i]=fib[i-1]+fib[i-2]+fib[i-3];
}
2. c语言斐波那契数列 Fibonacci数列
#include<stdio.h>
long int Fib(int N);
void main()
{
int i;
for (i=1;i<=80;i++)
{
printf("%d \t%10ld\t\n",i,Fib(i));
}
}
long int Fib(int N)
{
if (N<=1)
{
return 1;
}
else
{
returnFib(N-1)+Fib(N-2);
}
}
3. 如何使用C语言输出Fibonacci数列
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 0;
int limit = 10; // 输出前10个fibonacci数
int pre1 = 1; // 当前计算值前面第二个fibonacci数
int pre2 = 1; // 当前计算值前面一个fibonacci数
int res; // 当前计算值
for (i; i < limit; i++)
{
if (i == 0 || i == 1)
{
// 前两个fibonacci数是1
printf("1 ");
}
else
{
res = pre1 + pre2;
printf("%d ", res);
pre1 = pre2;
pre2 = res;
}
}
return 0;
}
4. c语言 用函数编写Fibonacci数列问题
#include<stdio.h>
intfib(inta);
main()
{
intn;
scanf("%d",&n);
fib(n);
}
intfib(inta)
{
intb[100];
inti;
b[0]=1;
b[1]=1;
for(i=2;i<=a-1;i++)
b[i]=b[i-1]+b[i-2];
for(i=0;i<a;i++)//b[a]没有被赋值,不能输出它的值
{
printf("%d ",b[i]);
if((i%4)==3)//每四个换行,应该是取余为3的时候打印换行符
printf(" ");//打印换行符应该在for循环里面
}
returnb[a];
}
5. 求用C语言表达斐波那契数列
#include <stdio.h>
main( ){
long f1,f2,f;
int i,n;
scanf("%d",&n);
f1=f2=1;
if(n<=2)
f=1;
else
for(i=3;i<=n;i++){
f=f1+f2;
f1=f2;
f2=f;
}
printf("%ld
",f);
}
6. C语言,fibonacci数列
#include<stdio.h>
voidmain()
{
inti,a[15]={1,1};
for(i=2;i<15;i++)
a[i]=a[i-1]+a[i-2];
for(i=0;i<15;i++)
printf("%-4d",a[i]);
}
7. C语言 计算fibonacci数列
就是计算前两个数的和,输出为第三个数,搞清楚要求再来编程即可。只是打印输出,不需要保留就整形即可,要保留使用,用数组实现。
int DateOld =0;
int DateNow=1;
int N;
for (N =0;N<18;N++)
{
int temp = DateNow;
printf("%d ", DateNow);
DateNow=DateOld +temp;
DateOld=temp;
}
8. c语言fibonacci数列问题
该问题属于fibonacci取余的问题
解法如下:
需要注意的是:
1:这道题目,建议用临时变量,没必要用数组存数列,因为题目不关心数列,只关心取余,也无法知道要设置多大的数组合适,设置小了,数组溢出,设置大了,影响内存(特别是像这样定义了这样的大数组data[20000],在之后的找工作,面试是很被动,很容易被刷);
2:为了防止n太大,f(n)的值导致int存不下,可分步取余(c=(a+b)%10007),然后再加,再取余;
f(n-1)=( f(n-2)+f(n-3) )%10007
f(n-2)=( f(n-3)+f(n-4) )%10007
f(n)=( f(n-1)+f(n-2) )%10007
9. C语言 斐波那契数列怎么写
#include<stdio.h>
intfei(intindex)//数组实现
{
if(index<1)
{
return-1;
}
if(index<3)
{
return1;
}
int*a=newint[index];
a[0]=a[1]=1;
for(inti=2;i<index;i++)
a[i]=a[i-1]+a[i-2];
intm=a[index-1];
deletea;//释放内存空间
returnm;
}
inttou(inti)//取第一位
{
while(i>9)
i/=10;
returni;
}
intmain()
{
intn,a[100];
scanf("%d",&n);
for(inti=0;i<n;i++)
scanf("%d",&a[i]);
for(inti=0;i<n;i++)
{
if(fei(a[i])>9)
printf("%d%d ",tou(fei(a[i])),fei(a[i])%10);
else
printf("%d ",fei(a[i]));
}
}