Java再帰実現フィボナッチ数列
プログラム呼び出し自体のプログラミング技術を再帰といいます。再帰的にはアルゴリズムとしてプログラム設計言語で広く使われている。1つのプロセスまたは関数は、その定義または間接的に自身を呼び出す方法があり、通常は大きな複雑な問題の層を元の問題と似たような規模の小さい問題に変えて解いています。再帰戦略は、少量のプログラムで解題過程に必要な複数回の計算を記述することができ、プログラムのコード量を大幅に低減します。再帰的能力は、限定された語句で対象の無限集合を定義することにある。一般的に、再帰的には境界条件、再帰的前進セグメント、再帰的リターンセグメントが必要である。境界条件が満たされない場合、再帰的に前進する。境界条件が満たされたら、再帰的に戻ります。――これは百科事典の話です。
はっきり言って、再帰方法自体が自分を呼び出して行う演算です。この例を挙げて説明します。フィボナッチの数列は有名です。
0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…
三つ目の数は前の二つの数を合わせて得られたものと見られます。
正常なサイクルを使って解決すれば、このようになります。
10個の数の結果は:34
これは通常の循環法を使って演算します。再帰を使うなら、次のようにします。
再帰の最も主要な二つの条件は、自分で自分を呼び出して再帰の条件を終了することです。
再帰は自分で呼び出しますので、資源の浪費が多く、運行時間は循環より長く、運行が遅く、効率が低いです。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
はっきり言って、再帰方法自体が自分を呼び出して行う演算です。この例を挙げて説明します。フィボナッチの数列は有名です。
0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…
三つ目の数は前の二つの数を合わせて得られたものと見られます。
正常なサイクルを使って解決すれば、このようになります。
public class FeiBo{
public static void main(String[] args) {
int num1=0;
int num2=1;
int numn=1;
int n=10;
for (int i = 3; i <=n; i++) {
numn=num1+num2;
num1=num2;
num2=numn;
}
System.err.println(n+" :"+numn);
}
}
実行結果は:10個の数の結果は:34
これは通常の循環法を使って演算します。再帰を使うなら、次のようにします。
public static int Recursion(int n){
if(n==1){
return 0;
}
if(n==2){
return 1;
}
return Recursion(n-1)+Recursion(n-2);
}
再帰的には終了条件が必要であり、再帰的には呼び出しを継続する必要はなく、再帰的に終了する。上記の判例終了条件は、n=1または2の場合、再帰方法自体を呼び出し続けるのではなく、0または1を返します。再帰の最も主要な二つの条件は、自分で自分を呼び出して再帰の条件を終了することです。
再帰は自分で呼び出しますので、資源の浪費が多く、運行時間は循環より長く、運行が遅く、効率が低いです。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。