heo-jae-won@home:~$

  • 再帰

    再帰 再帰 ベースケース 再帰が止まる条件 再帰呼び出し ベースケースに当てはまるまでずっと繰り返して自信を呼び出す 再帰を用いたデータ仕組み スタックフレーム - CallStackにはいくつかのスタックフレームがある - そのスタックフレームも再帰を用いた仕組み 実装ーfactorial 最初に実装したFactorial グローバル変数が必要 public static int factorial(int n) { a = a * n; if (n > 1) { factorial(n - 1); } return a; } AIに上のコードを投げて得られたものだけど、かなり違いがあってどこでこのようなロジックの違いが起こったのか考えてみた グローバル変数が必要ではない関数に書き換える 数学的には F(n) = n * F(n-1)なので、戻り値も左のような形になる そこでベースケースまで考えが及ばなかった そもそもベースケースの定義を間違っていて、停止じゃなくて、持続の条件として使っていた factorial(0)が0ではないことを認識していなかった 例えば、factorial(6)は...

  • 選択ソート

    時間計算量 時間計算量 コンピュータが問題を解く際、入力データ量の増加に対して、必要な処理のステップ数(計算や操作回数)がどう変化するかを指し示す。 O(1), O(n), O(nlogn), O(n2)などがあり、O(1)が一番効率高い。例は以下のよう。 配列のアクセス for文 Quickソート 選択ソート、ダブルFor文 選択ソート 選択ソート 未整列のデータ列から最小値(または最大値)を毎回選択し、整列済みの列の末尾に移動させる単純な並べ替えアルゴリズム 実装ー最大の値を探索 最大の値を探索 最大値を想定すること。 スターポイントのための1個目のFor文 比較のための2個目のFor文 ダブルFor文なので、O(n2)になる int[] abc = { 0, 1, 7, 2, 13, 15, 6 }; int max = abc[0]; for (int i = 0; i < abc.length; i++) { for (int j =...

  • recipe-community-project

    GITガイダンス作成 GITを使うことが初めてだった人が多かったため、GITの使用説明書を作成しました。 ステージングエリア、ローカルリポジトリ、リモートリポジトリ、ブランチなどの基本的な概念からGITコマンドまで必要なことを教わりました。 それを見ながら練習できるようにさせるため、シナリオも作りました。 リモートリポジトリローカルにコピーする:git clone ファイル作成: untracked Gitリポジトリの状態を確認する: git status ステージングに追加する: git add ローカルリポジトリに変更を確定する: git commit コミット履歴を確認: git log 確定した変更をリモートリポジトリに送信: git push ブランチを作る: git switch -C [branch name] ファイル修正: changed ステージングに追加する: git add ローカルリポジトリに変更を確定する: git commit(コミット) 確定した変更をリモートリポジトリに送信: git push(プッシュ) ブランチお互いに融合する: pull request(プルリクエスト) リモートリポジトリの変更をローカルに同期する: git pull ファイル修正: changed ファイルの変更を元に戻す: git...