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]));
}
}