#include "stdio.h"
超過10年行業(yè)經驗,技術領先,服務至上的經營模式,全靠網絡和口碑獲得客戶,為自己降低成本,也就是為客戶降低成本。到目前業(yè)務范圍包括了:網站制作、成都網站制作,成都網站推廣,成都網站優(yōu)化,整體網絡托管,微信小程序開發(fā),微信開發(fā),重慶App定制開發(fā),同時也可以讓客戶的網站和網絡營銷和我們一樣獲得訂單和生意!
int fb(int a1, int a2, int n); //斐波那契求和函數原型申明
int main()
{
int a, b, n, s;
scanf("%d%d%d", a, b, n);
s = fb(a, b, n);
printf("%d\n", s);
}
int fb(int a1, int a2, int n)
{
if(n==1)
? return a1;
if(n==2)
? return a2;
return fb(a1,a2,n-1)+fb(a1,a2,n-2);
}
#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\n",f);
}
波那契數列,又稱黃金分割數列,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞歸的方法定義:
F(0)=0,F(xiàn)(1)=1,F(xiàn)(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在現(xiàn)代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用,為此,美國數學會從1963起出版了以《斐波納契數列季刊》為名的一份數學雜志,用于專門刊載這方面的研究成果。
斐波那契數列問題,做為學習一般都用遞歸來寫,默認情況下都設置程序運行時默認的??臻g大小為1MB,下面是遞歸調用的實例。
#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;
}
#include
int
fib(int
n)//遞歸函數
{
//斐波那契數列算法
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;
}
斐波那契數列為:0,1,1,2,3,5,8,13.....
/*你的程序*/
#includestdio.h
int fib(int n,int f)
{
if(n==1n==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;
}
/*改正后的程序*/
#includestdio.h
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;
}
C語言源程序如下:
#includestdio.h
int main()
{
int array[100]={1,1};//斐波那契數列前兩個元素均為0
int i=0;//循環(huán)變量
int n=20;//數列需要求的個數
int sum = 0;//和變量
for(i=2;in+1;i++)//按遞推原理依次求出后續(xù)元素
{
array[i]=array[i-1]+array[i-2];//數列原理
}
printf("arr[1]-arr[%d] = ", n);//提示輸出數列元素
for (i = 0; i n; i++)//遍歷數列
{
printf("%d ",array[i]);//輸出arr[1]-arr[n]元素內容
sum += array[i];//順便進行求和
}
printf("\n%d ", sum);//輸出求和結果
return 0;
}
程序運行結果如下:
擴展資料:
利用遞歸原理進行求斐波那契數列的求解和求前n項和:
#includestdio.h
int fibonacci(int n) //遞歸函數
{?
if (n == 0 || n == 1) ?
return 1; ? ?
if (n 1) ? ? ? ?
return fibonacci(n - 1) + fibonacci(n - 2);?
}?
int main()?
{?
int i = 0; ? ?
for (i = 0; i 30; i++)?
{?
printf("fibonacci(%d) = %d\n", i, fibonacci(i));?
} ? ?
return 0;?
}