フィボナッチ数列
フィボナッチ
数列に基づく多くの問題があります。たとえば、階段にはn段あり、1段または2段上がることができます。2階に上がる方法はいくつありますか?
環境レンダリングの追加にもかかわらず、主題の本質は依然としてフィボナッチシーケンスです、ルールを見つけてください。
フィボナッチシーケンスの解決には、再帰または再帰の手法を使用できます
。1。再帰
再帰は、通常、前のアイテムを計算してシーケンスを取得することにより、特定のルールに従ってシーケンス内の各アイテムを計算することですアイテムの値を指定します。このアルゴリズムは、複雑で巨大な計算プロセスを単純なプロセスの複数の繰り返しに変換することを目的としており、このアルゴリズムは、高速なコンピューターと精力的なマシンの特性を利用しています。
int fib[50]; //采用数组保存中间结果,假设最多不超过50个数
//若不用数组,用三个变量循环赋值也可代替
int fibonacci(int n) //参数为所求的第n个数
{
fib[0] = 1;
fib[1] = 1; //初始化前两位
for (int i=2; i<=n; i++)
fib[i] = fib[i-1]+fib[i-2]; //根据规律循环
return fib[n];
}
2.再帰
プログラムが直接的または間接的に自分自身を呼び出すプログラミング手法は、再帰的アルゴリズムと呼ばれます。
int fibonacci(int n)
{
if (n<=1) return 1;
return fib(n-1)+fib(n-2);
}
欠点:再帰が何度も繰り返されるため、このアルゴリズムの効率は非常に低くなります。