フィボナッチ数:また、フィボナッチ数と呼ばれ、
列の数を指し:1,1,2,3,5,8,13,21 ...
法律を遵守が発見したフィボナッチ数1それから始まる第三のフィボナッチ数の係数は、上記の2つの数値を加算することによって得られた後、スタート。
数学的な使用再帰的定義:
F0 = 0;
。F1 = 1、
。。F2 = F0 + F1 = 0 + 1 = 1;
...
のFn = F(N - 1)+ F(N - 2)
(N> = 2 、nはNに属します*) `
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
//递归和非递归分别实现求第n个斐波那契数
//递归
int fab(int n)
{
if (n <= 2)
return 1;
else
return fab(n - 1) + fab(n - 2);
}
//非递归
int fab(int n)
{
int a = 1;
int b = 1;
int c = 0;
if (n <= 2)
return 1;
else
{
while (n > 2)
{
c = a + b;
a = b;
b = c;
n--;
}
}
return c;
}
int main()
{
int n = 0;
printf("请输入所要求的数字 \n");
scanf("%d", &n);
int ret = fab(n);
printf("%d ", ret);
system("pause");
return 0;
}
注:あなたがいずれかを選択できる2つの方法で
非再帰的方法は反復法です!
以下のための人気の再帰的な方法は、常に行為の数を置くことで、フィボナッチは2つのフィボナッチ数という行為の形で表現して、フィボナッチ数の最もローエンドを見つけ、常にバックトラックして、非再帰的この方法は、常にこのように、n番目のフィボナッチ数を求める達成二フィボナッチ数を更新することです。