第119回 再帰呼び出し
公開日:2014-11-19 更新日:2019-05-13
1. 概要
独り言によるプログラミング講座「第119回 再帰呼び出し」です。
2. 動画
3. 動画中に書いたソース
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//★独り言によるプログラミング講座
//■再帰呼び出し
// メソッドの中で自分自身を呼び出す
//フィボナッチ数列
//f(n + 2) = f(n + 1) + f(n)
//f(1) = 1
//f(0) = 0
//f(5) = f(4) + f(3) = 3 + 2 = 5
//f(4) = f(3) + f(2) = 2 + 1 = 3
//f(3) = f(2) + f(1) = 1 + 1 = 2
//f(2) = f(1) + f(0) = 1 + 0 = 1
}
public int getフィボナッチ数(int n) {
if (n == 0) return 0;
if (n == 1) return 1;
return
getフィボナッチ数(n - 1) +
getフィボナッチ数(n - 2);
}
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 12; i++) {
int value =
getフィボナッチ数(i);
listBox1.Items.Add(value.ToString());
}
}
private void button2_Click(object sender, EventArgs e)
{
List<String> list = getDirFileList("J:/");
foreach(var item in list) {
listBox1.Items.Add(item);
}
}
public List<String> getDirFileList(String targetPath) {
//戻り値用リスト
List<String> list = new List<String>();
//フォルダ一覧の取得
string[] dirList = Directory.GetDirectories(targetPath);
foreach (var path in dirList) {
list.AddRange(
getDirFileList(path) //再帰呼び出し
);
list.Add(path);
}
//ファイル一覧の取得
string[] fileList = Directory.GetFiles(targetPath);
foreach (var path in fileList) {
//list.Add(path);
}
return list;
}
}
}