すらぼうの開発ノート

モバイルアプリエンジニアのメモ

【Python】メモ化再帰による再帰処理の効率化

現在Recursionに取り組んでいる。 そこで学んだことをメモする。 メモ化再帰 再帰処理において、同じ引数の計算を何度も行う場合がある。 そこで計算結果をメモとしてキャッシュして効率化をはかること。 例えば以下が計算結果をキャッシュする前。 (例とし…

【Python】構文エラーと論理エラー

現在Recursionに取り組んでいる。 そこで学んだことをメモする。 構文エラー (syntax error) コマンドの中に誤った文字列が含まれていること。 # printの誤り prin("hello") 論理エラー プログラムはコンパイルできるが、エンジニアの意図通り動作しないこと…

【Python】グローバル変数の注意点

現在Recursionに取り組んでいる。 そこで学んだことをメモする。 グローバル変数は、プログラムの実行中常にメモリを占有する グローバル変数は、グローバルスコープに紐づけられる グローバルスコープはプログラムのどこからでもアクセスできるスコープ ど…

【Python】ローカルスコープから、グローバルスコープの変数を更新するには

現在Recursionに取り組んでいる。 そこで学んだことをメモする。 スコープ データや関数の影響範囲のこと。 ローカルスコープとグローバルスコープがあり、 ローカルスコープは特定のクラスや関数内の、制限された領域のこと。 ローカルスコープ内で定義され…

【Python】再帰処理で最大公約数を実装する

現在Recursionに取り組んでいる。 そこで学んだことをメモする。 再帰処理 再帰処理とは、とある処理の中で、自分自身を呼び出す処理のこと。 詳しくは以下の記事で紹介した。 note-tmk.hatenablog.com 最大公約数 複数の数値が存在するとき、各数値の約数の…

【Python】ハノイの塔の実装

現在Recursionに取り組んでいる。 そこで学んだことをメモする。 ハノイの塔 3本の棒と複数の円盤を用いたシンプルなパズル。 円盤を目的の棒に、なるべく少ない移動回数で移動させるというもの。 円盤は全てサイズが異なり、サイズの小さい円盤は大きい円盤…

【Python】フィボナッチ数列の実装

現在Recursionに取り組んでいる。 そこで学んだことをメモする。 フィボナッチ数列 次の漸化式で表現される数列をフィボナッチ数列と呼ぶ。 計算量はO(2n)である。 F0 = 0 F1 = 1 Fn = Fn-1 + Fn-2 (n ≥ 2) ja.wikipedia.org フィボナッチ数列は自然界でも観…