本文目錄一覽:
- 1、費波納切數列用C語言怎麼編程
- 2、求C語言中斐波那契數列源程序及解釋?
- 3、斐波那契數列C語言程序怎麼表示
- 4、C語言斐波那契數列求和
- 5、c語言,編程實現,求斐波那契數列,1,1,2,3,5,8,……的前20項及前20項和
費波納切數列用C語言怎麼編程
費波納切數列,更通用的音譯是斐波那契數列,又稱黃金分割數列,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、……
數學上的定義是F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)
根據數學定義,就可以編寫生成該數列的代碼,如下:
#include stdio.h
#define RANGE 30
static int fibonacci_values[RANGE];
void make_fibonacci_values(void)
{
int i;
fibonacci_values[0] = 0;
fibonacci_values[1] = 1;//賦值前兩項
for(i = 2; i RANGE; i ++)
fibonacci_values[i] = fibonacci_values[i-1] + fibonacci_values[i-2];//按照公式生成剩餘項
}
int main()
{
int i;
make_fibonacci_values();//調用生成函數
for(i = 0; i RANGE; i ++)
{
printf(“F(%d)=%d\n”, i, fibonacci_values[i]);
}
return 0;
}
這個代碼的功能是生成斐波那契數列前30項。
用一個數組把每項的值保存下來,然後依次計算。
事實上,只需要知道前兩個值,就可以知道下一個值,這樣保存兩個值就可以計算出第三個值了。於是求斐波那契數列第n項的函數也可以寫作:
#include stdio.h
int fibonacci(int n)
{
int i;
int a,b,c;
if(n0) return 0; //這其實是一種出錯情況。
if(n == 0) return 0;
if(n == 1) return 1;//處理前兩項的情況
a = 0;
b = 1;//對操作數賦初始值
for(i = 2; i = n; i ++)//第一個計算結果其實是F(2),所以i的初始值用2
{
c = a+b;//這時的c即F(i)
a = b;
b = c;
}
return c;
}
int main()
{
int n;
scanf(“%d”,n);//輸入一個n
printf(“F(%d) = %d\n”, n, fibonacci(n));//輸出數列第n項值
return 0;
}
同樣,對於這類問題也可以用遞歸思想,使代碼變得更簡潔。
#include stdio.h
int fibonacci(int n)
{
if(n == 0) return 0;
if(n == 1) return 1;//處理前兩項的情況
return fibonacci(n-1) + fibonacci(n-2);
}
int main()
{
int n;
scanf(“%d”,n);//輸入一個n
printf(“F(%d) = %d\n”, n, fibonacci(n));//輸出數列第n項值
return 0;
}
以上是求斐波那契數列的三種常見的方式。值得注意的一點是,實際使用中要注意使用類型的範圍,不要溢出。
比如在這幾個程序中使用的是最簡單的int類型,最大可以計算到F(46), 而F(47)已經超過了int所能表達的範圍,會發生溢出。如果需要更大的值,那麼就要改成使用更多位元組的類型。比如long long等。
求C語言中斐波那契數列源程序及解釋?
斐波那契數列定義:
F0 = 0
F1 = 1
Fn = Fn-1 + Fn-2 (n≥2)
直白的講,第0項、第一項分別約定為0、1,自第2項開始,每一項等於前兩項之和。
#include stdio.h
#define MAX 10 /*費波那契數列項數上限*/
void fibonacci (unsigned __int64 f[], int n) { /*生成n項費波那契數列,n=0為起始*/
int i;
f[0] = 0; /*F0=0*/
f[1] = 1; /*F1=1*/
for (i=2; i=n; i++) /*Fn=Fn-1+Fn-2(n=2)*/
f[i] = f[i-1] + f[i-2];
}
int main(void) {
unsigned __int64 f[MAX];
int i;
fibonacci (f, MAX);
for (i=0; i=MAX; i++)
printf (“F%d = %I64u\n”, i, f[i]);
printf(“\n”);
getch (); /*屏幕暫留*/
return 0;
}
運行結果
斐波那契數列C語言程序怎麼表示
#include cstdio
#include iostream
using namespace std;
int main()
{
int n;
cinn;
int a=1,b=1,c;
if(n3)
{
cout1endl;
return 0;
}
n-=2;
while(n–)
{
c=a+b;
a=b;
b=c;
}
coutcendl;
return 0;
}
輸入n為第n項,輸出斐波那契第n項值
C語言斐波那契數列求和
奇數項求和:a₁+a₃+a₅+a₇+…+a₂ₙ₋₁=a₂ₙ
偶數項求和:a₂+a₄+a₆+a₈+…+a₂ₙ=a₂ₙ₊₁-1
平方求和:a₁+a₂+a₃+a₄+…+aₙ²=aₙ·aₙ₊₁
斐波那契數列中的斐波那契數會經常出現在我們的眼前——比如松果、鳳梨、樹葉的排列、某些花朵的花瓣數(典型的有向日葵花瓣),蜂巢,蜻蜓翅膀,超越數e(可以推出更多),黃金矩形、黃金分割、等角螺線等。
擴展資料:
斐波那契數列特性
平方與前後項:從第二項開始,每個偶數項的平方都比前後兩項之積多1,每個奇數項的平方都比前後兩項之積少1。
如:第二項 1 的平方比它的前一項 1 和它的後一項 2 的積 2 少 1,第三項 2 的平方比它的前一項 1 和它的後一項 3 的積 3 多 1。
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
(註:奇數項和偶數項是指項數的奇偶,而並不是指數列的數字本身的奇偶)
參考資料來源:
百度百科-斐波那契數列
c語言,編程實現,求斐波那契數列,1,1,2,3,5,8,……的前20項及前20項和
C語言源程序如下:
#includestdio.h
int main()
{
int array[100]={1,1};//斐波那契數列前兩個元素均為0
int i=0;//循環變數
int n=20;//數列需要求的個數
int sum = 0;//和變數
for(i=2;in+1;i++)//按遞推原理依次求出後續元素
{
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;
}
原創文章,作者:AQER,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/150296.html