View SimpleRecursionExample.cs
// Tree traversal using recursion in C#
// We want to traverse the following tree, which may be arbitrarily
// deep/wide. These parameters are not known until runtime.
// root
// - branch1
// - leaf1
// - leaf2
// - branch2
View program.cs
bool showDebugOutput = true;
void Main()
var data = new string[] { "A", "R", "L", "S", "T", "N", "E" };
// Tell the user what's going on
Console.WriteLine("Unsorted Data:");
Console.WriteLine("Sorting Data...");
View PathWrapper.cs
// This code implements a wrapper around the static Path class.
// The interface allows us to inject a mock IPath instance at
// test time (for example when testing the MuchEasierToTest class).
public interface IPath{
string GetFileName(string fileName);
public class PathImpl : IPath {
public string GetFileName(string fileName){