I wrote this a while back when my fiance was taking a Number Theory class. I wrote about it [here](http://christopherjmcclellan.wordpress.com/2014/02/15/how-many-numbers-less-than-ten-thousand-contain-a-five/) and it recently came back to my attention. Anytime I write a `for` loop in Ruby I feel kind of dirty. I would like to "Ruby-ize" this routine if there is a more Ruby way to do it. Also, is this the most efficient algorithm for this?

Original Problem:

> Find all the numbers less than 10000 that contain the digit 5 anywhere.

(Even thought the original problem was for < 10000, I've run this much farther out)

The algorithm:

> \$f(x) = 9y + \dfrac{x}{10}\$

> Where \$y\$ is the previous result and \$x\$ is the power of 10 we're checking against. 

> i.e. \$y = 1\$ and \$x = 100\$, or \$y = 19\$ and \$x = 1000\$

 or, for the more mathematically inclined

>\$f(10^n)=9f(10^{n-1})+10^{n-1}\$

The code:

    def numbersContaining5(pwr)
    # Prints on screen the count of numbers containing a "5"
    #    for each power of ten up and including the one passed in.
    # pwr = the power of ten you wish to calculate to
     
        prev = 0
        for i in 1..pwr
            prev = (prev*9) + (10**i)/10 
            puts prev
        end
    end
     
    #call function
    numbersContaining5(4) # 10^4 = 10000