This topic is typically addressed during the courses of Discreet Mathematics or Mathematics for Computer Science. I've added here a very generical road map for solving recurrences. First things first. You have a problem to be algorithmically solved. After writing your algorithm, you analyse its complexity. For divide and conquer, for example, we typically have recurrence functions - you express the runtime in terms of the runtime of the subproblems. For brute force, on the other hand, the running time is directly affected by the size search space or the number of all possible solutions. For solving recurrences you can use one (or more than one) of the following approaches: substitution, iteration, iteration with visual trees and master method (this one for the order of growth only). Let's see an example and try to obtain the closed form of a recurrence: A very strict proof would require an informed guess using Iteration, followed by the proof of the obtained cl...