fibonacci數列c語言
① 用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];
}
② fibonacci數列c語言問題
顯然是3呀:第一項和第二項都是1,所以第三項是2,第四項就是3啦,執行結果也對!不過你的程序有錯誤:
#include<stdio.h>
long f(int y)
{ if(y= =1|| y= =2)//"=="中間不能有空格
return 1;
else
return f(y-1)+f(y-2);
}
main( )
{ long x,long f(int y);//long x後面應該是「;」而不是「,」,或者說long f(int y);這個生命可以去掉
x=f(4);
printf(「f(4) is %ld\n」,x);
}
③ 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
④ 如何使用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;
}
⑤ 斐波那契數列 c語言
#include <stdio.h>
int fn(int a)
{
if (a==1)
return 1;
else
{
if (a==2)
return 2;
else
return fn(a-1)+fn(a-2);
}
}
void main ()
{
int i;
FILE *fp;
fp=fopen("e:\\jieguo.txt","w"); // 保存的路徑,可以該。
for (i=1;i<=50;i++)
fprintf(fp,"%d:%d\n",i,fn(i));
fclose(fp);
}
注意:內 程序運行的容有點慢,要等一會兒, 你可以把 50改成 10 ,就能看見運行的結果了
在E盤的jieguo.txt中。
⑥ 求用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);
}
⑦ C語言算斐波那契數列
數字
溢出~~。很明顯的問題,你用高精度做吧,用
字元數組
模擬數字。
⑧ c語言編程,用遞歸實現Fibonacci數列
#include<stdio.h>
#define N 20
int Fibonacci(int n)
{
if(n == 1 || n==2)
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}
void main()
{
int i = 0;
for(i=1;i<=N;i++)
{
printf("%5d",Fibonacci(i));
if(i%5 == 0)
printf("\n");
}
printf("\n");
}
只要修改宏定義N的值,就可以輸出專斐波那契數列的前N項。屬
⑨ 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;
}
⑩ C語言斐波那契數列
利用斐波拉其數列計算公式計算:
(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}