the study of algorithms is also important because it trains us to think very specifically about certain problems it can serve to increase our mental and problem solving abilities by helping us isolate the components of problem and define relationships between these components in summarythere are four broad reasons for studying algorithms they are essential for computer science and intelligent systems they are important in many other domains (computational biologyeconomicsecologycommunicationsecologyphysicsand so on they play role in technology innovation they improve problem solving and analytical thinking algorithmsin their simplest formare just sequence of actionsa list of instructions it may just be linear construct of the form do xthen do ythen do zthen finish howeverto make things more useful we add clauses to the effect ofx then do yin python the if-else statements herethe future course of action is dependent on some conditionssay the state of data structure to this we also add the operationiterationthe whileand for statements expanding our algorithmic literacy further we add recursion recursion can often achieve the same result as iterationhoweverthey are fundamentally different recursive function calls itselfapplying the same function to progressively smaller inputs the input of any recursive step is the output of the previous recursive step essentiallywe can say that algorithms are composed of the following four elementssequential operations actions based on the state of data structure iterationrepeating an action number of times recursioncalling itself on subset of inputs algorithm design paradigms in generalwe can discern three broad approaches to algorithm design they aredivide and conquer greedy algorithms dynamic programming as the name suggeststhe divide and conquer paradigm involves breaking problem into smaller sub problemsand then in some way combining the results to obtain global solution this is very common and natural problem solving techniqueand isarguablythe most commonly used approach to algorithm design