1. 程式人生 > 其它 >18、斐波那契數列

18、斐波那契數列

斐波那契數列(Fibonacci Sequence):又稱黃金分割數列,因數學家萊昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……在數學上,斐波那契數列以如下被以遞推的方法定義:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用。

2019年2 連結

# 遞迴

#include <stdio.h>
#define n 100
// 0、1、1、2、3、5、8、13、21、34、……
//在數學上,斐波那契數列以如下被以遞推的方法定義:
//F(0)=0,F(1)=1, //
//F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*


int fibo(int n){
if(n == 0) return 0;
if(n == 1) return 1;

return fibo(n - 1) + fibo(n - 2);
}
int main() {
int N = 0;
scanf("%d", &N );
int arr[ 100 ];
int sum;
for(int i = 0; i < N; i++) {
arr[i] = fibo( i );
printf("%d -> %d\n", i, arr[i]);
}
for (int i = 0; i < N ; i++) {
sum += arr[i];
}
printf("%d\nOK", sum );
return 0;
}




// 非遞迴
輸入n,輸出前n項和1 1 2 3 5 8 13(提示an=an-1+an-2)
#include <iostream>
using namespace std;
int main()
{
    int n,sum=0,a[100];
    cin>>n;
    a[0] = a[1] = 1;
    for(int i = 2; i < n; i++)
        a[i] = a[i - 2] + a[i - 1]; //1️⃣
    for(int j = 0; j < n; j++)
        sum += a[j];
    cout << "斐波那契數列前" << n << "項的和是:" << sum << endl;
    return 0;
}

PS:
1️⃣最核心的一句程式碼,第n項數字為前倆項數字之和(n>=3),相信各位都爛熟於心了

本文來自部落格園,轉載請註明原文連結:https://www.cnblogs.com/WG11/p/15651628.html,作者:def_Class

https://www.cnblogs.com/WG11/