About recursive programming:
It's silly that they teach you about these algorithms that are worthless, with "exponential time complexity", or O(2^n) time complexity.
But! Recursive programming is not worthless and doesn't always lead to algorithms with exponential time complexity.
In fact, they have nothing to do w/ each other. You can create algorithms in exponential time complexity and beyond w/o recursion, and conversely, you can create recursive algorithms that takes far less than exponential time (eg. one popular programming exercise w/ implementing factorials would result in a linear-time algorithm).
Recursion is simply an approach in creating an algorithm that works in the first place, the key approach being "divide and conquer".
It's perhaps a shame you were exposed to bad examples
Actually, I think they are excellent examples. Tower of hanoi by design takes at least 2^n - 1 steps (or something close to that; I don't remember exactly) to carry out so the time complexity is a moot point. It's simply an example of a problem that is very well-suited to being solved recursively.
Pascal triangle works well because its mathematical formula can be expressed in a recursive manner. A naive implementation using recursion is of course not very fast, but mainly because the naive approach would keep recalculating the same stuff over and over in the process. I don't know how advance your programming class will go, but there are techniques such as memoization (not a misspelling), where you cache intermediate results that had already been calculated, which can turn your O(2^n) recursive algorithm into a recursive algorithm that only runs in O(n^2).
I suppose they might not be the most "fun" examples, but then again, you're in a programming class, what can I say...... :