> def repeat type
>   number_of_bottles = '99'
>   while number_of_bottles != '0'
>     puts number_of_bottles.to_s + ' bottles:' + ' If one falls, ' +
> (number_of_bottles.to_i - 1).to_s + ' bottles.'
>     type + (number_of_bottles.to_i - 1).to_s + ':'
>     number_of_bottles = gets.chomp
>   end
> end
> 
> repeat 'Type '
> ===============
> 
> I want to add a recursion conditional: If there are 98 bottles left,

First of all, use of the term "recursion" is not correct here. Recursion 
occurs when a function calls itself. The code above is iterative, not 
recursive.

For example (this can be written more tersely but I am trying to 
illustrate something clearly):

def factorial(n)
  return 1 if n <= 1 # Termination condition
  return n * factorial(n - 1) # Recursive call
end

factorial(6) => 720

The same thing iteratively is

def factorial(n)
  fact = 1
  n.downto(1) { |i| fact *= i }
  fact
end

Second of all, your code uses strings where it should use integers. 
Writing

while number_of_bottles != '0'

is doing a string comparison. '0' is a 1-character string consisting of 
the character '0'. You really want an integer.

So, rewriting your code to be more Rubyish,

def repeat(type)
  number_of_bottles = 99
  while number_of_bottles != 0
    puts "#{number_of_bottles} bottles: If one falls, 
#{number_of_bottles - 1} bottles."
    puts "#{type}#{number_of_bottles - 1}:"
    number_of_bottles = gets.chomp.to_i
  end
end

Now, to ensure that someone types in what you want, you should create a 
simple function to get what you are looking for, e.g.

def expect(msg, expected_value)
  puts "#{msg}#{expected_value}:"
  loop do
    actual_value = gets.chomp.to_i
    return actual_value if actual_value == expected_value
    puts "Sorry, expected #{expected_value} but got #{actual_value}"
  end
end

Note that this function is not perfect; it does not check to see if an 
actual integer was entered, so if people enter non-digits they will be 
seen as 0 values. I leave this as a exercise for the reader...

Anyway, we now change the original function to the following:

def repeat(msg)
  number_of_bottles = 99
  while number_of_bottles != 0 do
    puts "#{number_of_bottles} bottles: If one falls, 
#{number_of_bottles - 1} bottles."
    number_of_bottles = expect(msg, number_of_bottles - 1)
  end
end

Hope this helps. I recommend buying and reading Pragmatic Programming in 
Ruby. It will answer a lot of your Ruby questions.

-- 
Posted via http://www.ruby-forum.com/.