以前、「【インタビュー】 - 低速反応再帰」で 3 つの再帰アルゴリズムを読みました。フィボナッチ数列の最適化後のアルゴリズムのアイデアは確かに優れていますが、最後の 2 つの数列に再帰を使用する場合、個人的には労力に見合わないと感じています。再帰を回避できる場合は、再帰を使用しないようにしてください。一部のアルゴリズムは数学を使用して完全に解決できるためです。したがって、この論文では、これら 3 つのシリーズの最終的なアルゴリズムを次のようにまとめています。 1. 配列 1,1,2,3,5,8,13... の 30 番目のビットの値を計算します。 再帰アルゴリズムは次のとおりです。
再帰アルゴリズムを使用して計算する場合、繰り返し操作が多くなります。配列を使用すると、比較的効率的です。最終的なアルゴリズムは次のようになります。
フィボナッチ数列の場合、一般式は Fn=F(n-1)+F(n-2)(n>=2, n∈N*) であり、計算を 1 回ループするだけで必要な値が得られます。 2. 1+2+3+4+...+nの値を計算する 再帰アルゴリズムは次のとおりです。
数値 (インデックス) が非常に大きい場合、上記の再帰アルゴリズムでは間違いなく問題が発生します。以下に示す最終的なアルゴリズムを見てみましょう。
1+2+3+4+...+n は、高校数学の等差数列の和の完全に特殊なケースです。 1+2+3+4+......+n は (最初の項 + 最後の項)*項の数/2 に等しいので、結果は n(n+1)/2 になります。これは再帰なしでも解くことができ、式を適用するだけです。 3. 1-2+3-4+5-6+7+...+nの値を計算します。 再帰アルゴリズムは次のとおりです。
1-2+3-4+5-6+7+...+n の場合、次の 2 つのケースに分けられます。 (1) nが偶数のとき、1-2+3-4+5-6+7+...+n=(1-2)+(3-4)+(5-6)+...+[(n-1)-n] =-1×(n/2) =-n/2 (2)nが奇数のとき、1−2+3−4+5−6+7+...+n=(1−2)+(3−4)+(5−6)+...+[(n−2)−(n−1)]+n =-1×(n-1)/2 +n =(n+1)/2 したがって、最終的なアルゴリズムは次のようになります。
数学的に解決できる問題の場合は、再帰を使用して計算しないようにしてください。もちろん、多くの場合、再帰は依然として必要です。これは再帰アルゴリズムが悪いと言っているのではなく、特定の問題を解決するために最善の方法を使用することが最終的な解決策であるということです。これがお役に立てば幸いです。 オリジナル: http://www.cnblogs.com/jasenkin/archive/2012/02/22/recursion_math_algorithm_comparion.html 【編集者のおすすめ】
|
<<: ユーザー投票に基づくランキングアルゴリズム: Delicious と Hacker News
>>: 研究者らがRSA公開鍵生成アルゴリズムの脆弱性を発見
このシリーズの最初の記事では、人工知能、機械学習、ディープラーニング、データサイエンスなどの分野間の...
[[393110]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
世界のPC業界が年々衰退し、スマートフォン市場が飽和状態に陥る中、ビッグデータ、クラウドコンピューテ...
[51CTO.comより] 両会期中の政府活動報告に人工知能が盛り込まれた。万鋼科学技術部長は、中国...
みなさんこんにちは、カソンです。テクノロジー系のブログをよく読む友人なら、 Webpilot [1]...
人工知能の歴史は、アラン・チューリングがチューリングテストを発明した 1950 年代にまで遡ります。...
Facebook AI は、Transformer を完全にベースとし、畳み込みが不要で、トレーニン...
AI ビデオ生成は、2024 年には次の最先端分野になる可能性があります。過去数ヶ月を振り返ると、R...
翻訳者 |陳俊レビュー | Chonglou今日、人工知能ツール (AI) は非常に強力です。開発チ...
タンパク質は生命の原動力であり、その配列と構造を理解することは、新しい酵素の設計や命を救う薬の開発な...