斐波那契數(shù)列在數(shù)學(xué)上的通項公式為
在合肥等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需網(wǎng)站建設(shè),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站制作,合肥網(wǎng)站建設(shè)費用合理。
An=An-1+An-2
在C語言中,根據(jù)算法實現(xiàn)不同,可以有很多種表達(dá)方式。以計算斐波那契第N項值為例,說明如下。
一、以數(shù)組方式實現(xiàn):
int?fn(int?n)
{
int?*a,i,r;
a=(int?*)malloc(sizeof(int)*n);//分配動態(tài)數(shù)組。
a[0]=1;
a[1]=1;//初始化前兩項。?
for(i?=?2;?in;?i?++)
{
a[i]=a[i-1]+a[i-2];//這里就是通項公式的一種實現(xiàn)形式。?
}
r?=?a[n-1];//保存結(jié)果
free(a);//釋放動態(tài)數(shù)組
return?r;//返回結(jié)果值。?
}
二、以遞歸函數(shù)形式:
int?fn(int?n)
{
if(n?==?0?||?n?==?1)?return?1;//前兩項固定值。
return?fn(n-1)+fn(n-2);//?通過遞歸調(diào)用實現(xiàn)通項公式。?
}
三、注意事項:
1、方法有很多,不可能窮舉完成,寫代碼時要靈活使用。
2、例子中以int保存,限于整型范圍,計算很大值時會出現(xiàn)溢出。 根據(jù)實際需要選擇類型。
#include
int
fib(int
n)//遞歸函數(shù)
{
//斐波那契數(shù)列算法
if(n==1||n==2)
return
1;
return
fib(n-1)+fib(n-2);
}
int
main()
{
int
n;
scanf("%d",n);
printf("%d\n",fib(n));
return
0;
}
斐波那契數(shù)列問題,做為學(xué)習(xí)一般都用遞歸來寫,默認(rèn)情況下都設(shè)置程序運行時默認(rèn)的??臻g大小為1MB,下面是遞歸調(diào)用的實例。
#includestdio.h
int?fibo(int?a)
{
if(a=2)
return?1;
else
return?fibo(a-1)+fibo(a-2);
}
int?main()
{
int?a;
while(scanf("%d",a)!=EOF)
printf("%d\n",fibo(a));
return?0;
}