再帰関数の設計手法

1. はじめに 再帰は、関数型言語のみならず、あらゆるプログラミングパラダイムにおいて極めて重要な概念である。本稿では、数学的帰納法との関連性を踏まえながら、再帰関数の設計手法について体系的解説していく。 2. 再帰と数学的帰納法 2.1 数学的帰納法の原理 数学的帰納法は、自然数に関する命題を証明するための手法である。その原理は以下の2つのステップから ...

6月22日 22:05 投稿

Pythonプログラミングの基礎知識

インストール 変数と単純なデータ型 コメント # 1行コメント 変数 変数はデータを識別するためのラベルです。 Pythonでは変数宣言が不要です 変数命名ルール Pythonの変数名はアルファベット、数字、アンダースコアのみ使用可能です。 変数の使用 greeting = "こんにちはPython世界" print(greeting) 複数変数に同時代入 a,b,c=10,20,30 print(a,b,c) 定数 ...

6月21日 22:46 投稿

JavaにおけるHashMapとArrayListの基本的な操作方法

Javaコレクションフレームワークの概要 Javaのコレクションフレームワークは主に以下の2つのカテゴリに分類されます: Collectionインターフェース: 単一要素のコレクション Listインターフェース: 順序あり、重複可能なデータ → ArrayList, LinkedList, Vector Setインターフェース: 順序なし、重複不可のデータ → HashSet, TreeSet, LinkedHashS ...

6月20日 00:21 投稿

二分木の基本操作と実装

二分木の基礎知識(概念、特性、走査方法)について前回の記事で学びました。今回は主にコードの実装に焦点を当てます。 目次 二分木の疑似作成 二分木の走査 二分木のノード数の取得 二分木の葉ノード数の取得 二分木の第Kレベルのノード数の取得 二分木の高さの取得 二分木での要素検索 二分木の疑似作成 なぜ疑似作成と呼ぶのでしょうか。二分木の作成は非常に複雑なプ ...

6月17日 16:41 投稿

Pythonリストの基本操作と使い方

要素の検索と確認 index(x) は、リスト内で最初に見つかった値 x のインデックスを返します。 items = ['apple', 'banana', 'cherry'] print(items.index('banana')) # 出力: 1 count(x) は、リスト内に含まれる値 x の出現回数を返します。 values = [1, 2, 2, 3, 2, 4] print(values.count(2)) # 出力: 3 in 演算子は、指定した要素がリストに存在するかどうかを真 ...

6月16日 23:53 投稿

データ構造アルゴリズム学習ノート

データ構造 単方向連結リストの操作 // 初期化 void initialize() { top = -1; // リストの先頭を-1に設定 counter = 0; // 使用中のインデックスカウンター } // 先頭に要素を挿入 void insert_at_top(int value) { elements[counter] = value; // 値をカレントノードに格納 next_pointers[counter] = top; // カレントノードの次を現在の先頭に ...

6月16日 18:20 投稿

競技プログラミングコンテスト問題の解法解説

円周率日チャレンジ Pythonの高精度計算を活用する問題。浮動小数点数の精度問題を回避するため、整数演算で処理する。 n = int(input()) pi_value = 31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679 results = [] for _ in range(n): numerator, denominator = map(int, input().split()) approx = nume ...

6月15日 16:47 投稿

SMU春季2023竞赛第5轮(2023年江西省级程序设计竞赛官方赛题)

問題リンク 問題A. 木を掘って火を起こす S * V >= n さえ満たせばよい #include<bits/stdc++.h> #define int long long #define endl '\n' using namespace std; const int N = 2010,mod = 1e9 + 7; int n,s,v; void solve() { cin >> n >> s >> v; if(s * v >= n) cout << 1 << endl; else cout &lt ...

6月14日 20:52 投稿

C言語による順序表の実装:挿入、削除、検索、およびマージ

順序表の基本操作とC言語による実装 順序表(シーケンスリスト)は、メモリ上で連続したアドレス空間を使用してデータを格納する線形リストの一種です。C言語の配列を用いて、このデータ構造の基礎となる操作である位置による検索、値による検索、要素の削除、挿入、そして2つのリストの統合を実装します。 1. 指定位置による要素の取得 順序表では、物理的なメモリ配置が ...

6月13日 16:47 投稿

C++における再帰関数の実装例

コラッツ予想(角谷予想) 自然数に対して、偶数なら2で割り、奇数なら3倍して1を足す操作を繰り返すと、最終的に1に到達するという予想。再帰関数で操作回数をカウントする。 #include <iostream> using namespace std; int countSteps(int num) { if (num == 1) return 0; if (num % 2 == 0) return 1 + countSteps(num / 2); return 1 + countSteps( ...

6月12日 20:24 投稿