Fibonacci numbers
Coddyの「数学パズル」コースのレッスン 4/20。
フィボナッチ数列の各項は、前の2つの項を足し合わせることで生成されます。
a[n+2]=a[n]+a[n+1]1 と 2 から 始めると、 100 未満の 最初の 10 項は 次のようになります。
1, 2, 3, 5, 8, 13, 21, 34, 55, 89.
フィボナッチ数列は、フィボナッチによる著書『算盤の書』(Liber Abaci、The Book of Calculation、1202年)に登場し、そこではウサギの個体数の増加を計算するために使用されています。フィボナッチは、理想化された(生物学的には非現実的な)ウサギの個体数の増加を、次のように仮定して考察しました。生まれたばかりの繁殖可能なウサギのつがいを野に放つ。各つがいは生後1ヶ月で交配し、2ヶ月目の終わりに必ず別のつがいのウサギを産む。そしてウサギは決して死なず、永遠に繁殖を続ける。フィボナッチは「1年後には何対のウサギがいるか?」というパズルを提示しました。
nヶ月目の終わりにおけるウサギのつがいの数は、成熟したつがいの数(つまり、n – 2ヶ月目のつがいの数)と、先月(n – 1ヶ月目)に生存していたつがいの数の合計に等しくなります。nヶ月目の数は、第nフィボナッチ数です。[フリー百科事典『ウィキペディア(Wikipedia)』]
チャレンジ
簡単自然数 <i>N</i> を受け取り、1 と 2 から始まるフィボナッチ数列の項のうち、その値が <i>N</i> を超えないものの個数を返す Python コード calcFibonacciNums を作成してください。
自分で試してみよう
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include "solution.h"
int main() {
int n;
if (scanf("%d", &n) != 1) n = 0;
int r = calcFibonacciNums(n);
printf("%d\n", r);
return 0;
}