タグ付けされた質問 「computer-science」

コンピュータサイエンス(CS)はプログラミングの背後にある科学です。これは、情報と計算の理論的基礎、およびコンピュータシステムでのそれらの実装と適用のための実用的な手法の研究です。


12
関数ポインタ、クロージャ、ラムダ
私はちょうど今関数ポインタについて学んでいて、この主題に関するK&Rの章を読んでいたとき、最初に私を襲ったのは「ねえ、これはちょっと閉鎖のようなものだ」でした。私はこの仮定がどういうわけか根本的に間違っていることを知っていました、そしてオンラインで検索した後、私はこの比較の分析を実際には見つけませんでした。 では、なぜCスタイルの関数ポインターがクロージャーやラムダと根本的に異なるのでしょうか。私が知る限り、それは、関数を匿名で定義する慣行とは対照的に、関数ポインターがまだ定義された(名前付き)関数を指しているという事実と関係があります。 関数を関数に渡すことは、名前が付けられていない2番目のケースでは、渡される通常の日常の関数である最初のケースよりも強力であると見なされるのはなぜですか? 2つを非常に密接に比較するのが間違っている方法と理由を教えてください。 ありがとう。

5
最小限の操作を計算して、2つのツリー構造を同一にします
これはCSの質問ですが、興味深い質問です。 多かれ少なかれ同じノードが再編成された2つのツリー構造があるとしましょう。どのように見つけますか どれか ある意味で最小限 操作のシーケンス MOVE(A, B) -ノードAをノードBの下に移動します(サブツリー全体を含む) INSERT(N, B)-ノードBの下に新しいノードNを挿入します DELETE (A) -ノードAを削除します(サブツリー全体を含む) これは、あるツリーを別のツリーに変換します。 明らかに、そのような変換が不可能な場合があります。たとえば、ルートAと子Bから、ルートBと子Aなどです。このような場合、アルゴリズムは単に「不可能」な結果をもたらします。 さらに壮観なバージョンは、ネットワークの一般化です。つまり、ノードがツリー内で複数回発生する可能性がある(事実上複数の「親」を持つ)と想定し、サイクルは禁止されています。 免責事項:これは宿題ではありません。実際には実際のビジネス上の問題から来ているので、誰かが解決策を知っているのではないかと思うと非常に興味深いと思いました。

4
文字列0(n)を比較するのに、数値0(1)を比較するのはなぜですか?
2つの文字列が等しいかどうかを比較するには、インタープリターが両方の文字列を反復処理して各文字を比較する必要があることを理解しています。 これは時間を複雑0(n)にしnます。ここで、は最短の文字列の長さです。 ただし、2つの数値を比較して等しいかどうかは0(1)です。 何故ですか?インタプリタは、等しいかどうかを確認するためにすべての数値を反復処理する必要はないでしょうか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.