An example: To make a program that searches all the files on your computer, it has to be able to keep track of which folders it has already searched through, so it doesn't look through the same folder twice. So it does this: inside each folder, it goes as far down into subfolders as it can. Every time it checks something to see if it matches, it will write it down on the list as "already searched". Then it will leave and go to the next subfolder. If there are no subfolders left, it will backtrack another step and look in the next bigger folder. It does this until it has looked through everything.